liguofeng29’s blog

個人勉強用ブログだっす。

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

  <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>
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.3.16.3</version>
    </dependency>
    <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だけ記述すれば、それ以降の依存性は自動的に解決してくれる。 すごい!