mvn - 依頼性(dependency)
依頼性はmavenの最大の特徴であると同時に強力な理由でもある。
下記例で依頼性について理解してみよう。
【struts2のwebプロジェクトを作成開発してみよう。】
プロジェクト名:sample2
開発ドメイン:org.lee
パッケージ:org.lee.struts2
【1.mvnコマンドでwebプロジェクト生成】
mvn archetype:generate
-DgroupId=org.lee
-DartifactId=sample2
-Dpackage=org.lee.struts2
-DarchetypeArtifactId=maven-archetype-webapp
-DinteractiveMode=false
【2.ファイル構成】
C:\USERS\xxxxx\SAMPLE2
│ pom.xml
│
└─src
└─main
├─resources
└─webapp
│ index.jsp
│
└─WEB-INF
web.xml
【struts2の依存性を追加】 http://search.maven.org/で確認。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.lee</groupId>
<artifactId>sample2</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample2 Maven Webapp</name>
<dependencies>
<artifactId>struts2-core</artifactId>
<version>2.3.16.3</version>
</dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>sample2</finalName>
</build>
</project>
【ダウンロードされたjarと生成されたwarファイル】
│ pom.xml
│
├─src
│ └─main
│ ├─resources
│ └─webapp
│ │ index.jsp
│ │
│ └─WEB-INF
│ web.xml
│
└─target
│ sample2.war
│
├─classes
├─maven-archiver
│ pom.properties
│
└─sample2
│ index.jsp
│
├─META-INF
└─WEB-INF
│ web.xml
│
├─classes
└─lib
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
※作成したプロジェクトがA.jarに依存して、A.jarがB.jarに依存する場合、
POM.xmlにA.jarだけ記述すれば、それ以降の依存性は自動的に解決してくれる。 すごい!