maven複数のサブプロジェクト、親プロジェクト間の参照の問題
に引くhttp://blog.csdn.net/whuslei/article/details/7989102
に質問
以下は簡単なプロジェクト構造図です.
Parent`------ childA(BusinessLayer) `--- pom.xml`------ childB(WebLayer) `--- pom.xml`------ pom.xml
1、ParentはどうしてchildAとchildBを見つけることができますか?
mavenではparentモジュールがchildAとchildBを組織し、「集約」と呼ばれ、複数のモジュールが共同でコンパイルされます.実現は簡単で、parentのpomファイルに以下の内容を加えるだけです.
2、こう書けばOKなのかな?
これはmavenコンパイラにparentのpomファイルを読み込むときにchildAとchildBを見つけるように伝えるだけですが、導入した依存関係をそれぞれコンパイルします.これによりpomファイルが導入されたパッケージが重複します!!そこで我々は「継承」の概念を導入し,すなわち「親子」関係を形成し,子pomは親pomに導入された依存を参照できる.具体的な方法は以下の通りです.
parentでは、「*」で識別された行がパスを構成し、maven倉庫でこのpomファイルを見つけることができます.この例ではpathはM 2_Path/com/sang/main/Parent-Moduel/1.0.2/xxxx-1.0.2.pom.だからこの3つのラベルは必須です!!!
親pomが書き終わったら、子pomはラベルで親pomの依存を継承します.以下のようにします.
注目すべきはラベルであり,pomの階層関係が本例のように1層だけ隔てられている場合はこれを省略することができる.mavenも同様にサブpomを見つけることができます.
子pomにラベルを導入すると、親pomから継承されるなどの属性があります.例えばchildAは次のような内容を追加するだけです.
3、依存を追加する方法
mavenはjarパッケージ依存性を容易に管理できます.具体的な方法は以下の通りです.
継承しない場合は、pomに対応するモジュールがこのjarパケットを参照できるように、各pomにこのような依存を加える必要があります.上記のjarパッケージの繰り返し参照は、次の方法で解決できます.
主pomで依存を引き起こすことで,サブpomが使用する可能性のあるjarパケット依存を表す.
サブpom jarパッケージを参照する必要がある場合は、直接参照してください.加入する必要がなく、統一管理が容易です.また、サブpomでのみ使用されるjarパッケージを追加することもできます.たとえば、次のようにします.
4、jarパッケージ依存に加えて、プラグインはこのような方法で管理することができる
5、childAがchildBのjarパッケージを参照しているなど、サブpom間に参照関係がある場合は、どうすればいいですか.
に質問
以下は簡単なプロジェクト構造図です.
Parent`------ childA(BusinessLayer) `--- pom.xml`------ childB(WebLayer) `--- pom.xml`------ pom.xml
1、ParentはどうしてchildAとchildBを見つけることができますか?
mavenではparentモジュールがchildAとchildBを組織し、「集約」と呼ばれ、複数のモジュールが共同でコンパイルされます.実現は簡単で、parentのpomファイルに以下の内容を加えるだけです.
<modules>
<module>childAmodule>
<module>childBmodule>
modules>
2、こう書けばOKなのかな?
これはmavenコンパイラにparentのpomファイルを読み込むときにchildAとchildBを見つけるように伝えるだけですが、導入した依存関係をそれぞれコンパイルします.これによりpomファイルが導入されたパッケージが重複します!!そこで我々は「継承」の概念を導入し,すなわち「親子」関係を形成し,子pomは親pomに導入された依存を参照できる.具体的な方法は以下の通りです.
parentでは、「*」で識別された行がパスを構成し、maven倉庫でこのpomファイルを見つけることができます.この例ではpathはM 2_Path/com/sang/main/Parent-Moduel/1.0.2/xxxx-1.0.2.pom.だからこの3つのラベルは必須です!!!
<modelVersion>4.0.0modelVersion>
<groupId>com.sang.maingroupId> *
<artifactId>Parent-ModuelartifactId> *
<version>1.0.2version> *
<packaging>pompackaging>
<name>Simple-mainname>
親pomが書き終わったら、子pomはラベルで親pomの依存を継承します.以下のようにします.
<parent>
<groupId>com.sang.maingroupId>
<artifactId>Parent-ModuelartifactId>
<version>1.0.2version>
<relativePath>../pom.xmlrelativePath>
parent>
注目すべきはラベルであり,pomの階層関係が本例のように1層だけ隔てられている場合はこれを省略することができる.mavenも同様にサブpomを見つけることができます.
子pomにラベルを導入すると、親pomから継承されるなどの属性があります.例えばchildAは次のような内容を追加するだけです.
<modelVersion>4.0.0modelVersion>
<groupId>com.sang.businessgroupId>
<artifactId>ChildA-moduleartifactId>
<packaging>jarpackaging>
<name>childAname>
3、依存を追加する方法
mavenはjarパッケージ依存性を容易に管理できます.具体的な方法は以下の通りです.
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>servlet-apiartifactId>
<version>2.5version>
dependency>
dependencies>
継承しない場合は、pomに対応するモジュールがこのjarパケットを参照できるように、各pomにこのような依存を加える必要があります.上記のjarパッケージの繰り返し参照は、次の方法で解決できます.
主pomで依存を引き起こすことで,サブpomが使用する可能性のあるjarパケット依存を表す.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>servlet-apiartifactId>
<version>2.5version>
dependency>
dependencies>
dependencyManagement>
サブpom jarパッケージを参照する必要がある場合は、直接参照してください.加入する必要がなく、統一管理が容易です.また、サブpomでのみ使用されるjarパッケージを追加することもできます.たとえば、次のようにします.
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>servlet-apiartifactId>
dependency>
<dependency>
<groupId>org.codehaus.jacksongroupId>
<artifactId>jackson-core-lgplartifactId>
<version>1.9.4version>
dependency>
dependencies>
4、jarパッケージ依存に加えて、プラグインはこのような方法で管理することができる
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-source-pluginartifactId>
<version>2.1.1version>
plugin>
plugins>
pluginManagement>
build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-source-pluginartifactId>
plugin>
plugins>
build>
5、childAがchildBのjarパッケージを参照しているなど、サブpom間に参照関係がある場合は、どうすればいいですか.
<dependency>
<groupId>com.modulegroupId>
<artifactId>childAartifactId>
<version>1.0.0version>
dependency>