回答:
管理された依存関係のみをインポートできます。つまり、他のPOMはプロジェクトのPOMのセクションにのみインポートできdependencyManagement
ます。すなわち
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>other.pom.group.id</groupId>
<artifactId>other-pom-artifact-id</artifactId>
<version>SNAPSHOT</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
...
その後、のdependencyManagement
セクションで定義されているすべての依存関係other-pom-artifact-id
がPOMのdependencyManagement
セクションに含まれます。その後dependency
、POM(およびそのすべての子POM)のセクションでこれらの依存関係を参照できますversion
。
ただし、POMで通常の依存関係を定義するだけの場合、のセクションからのother-pom-artifact-id
すべてがプロジェクトに推移的に含まれますが、のセクションで定義された依存関係はまったく含まれません。dependencies
dependency
other-pom-artifact-id
dependencyManagement
other-pom-artifact-id
したがって、基本的には2つの異なるメカニズムが2つの異なるタイプの依存関係(管理された依存関係と通常の依存関係)のインポート/インクルードに使用されます。
MavenのWebサイトには、私よりもはるかによく説明できる良いページがあります。Mavenの依存関係管理と、依存関係のインポートに関する特定の情報も含まれています。
... <dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>pomlib-lib</artifactId> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>pomlib-war</artifactId> <type>war</type> </dependency> </dependencies> </project>
DRYとSkinny War
pom
タイププロジェクトをsimple dependency
別のプロジェクトとしてにすることはできません。(まあ、あなたはできます-しかしそれは有用なことを何もしません)。parent-child
関係があるだけです。これは本質的にmanaging dependency through inheritance
です。
import
セクションのpom
型依存関係のスコープを<dependencyManagement>
使用すると、同等のmultiple inheritance
。
あなたは違うかもしれない poms
-それぞれmanaging
が関連する依存関係の束。これらを使用するプロジェクトができimport
、これらのpoms
、その後、彼らはバージョンを心配することなく、必要があるとの依存関係を指定します。これは基本的にはbill of materials
概念であり、@ DB5によって指定されたリンクに示されています。
これはparent poms
、複雑なマルチモジュールプロジェクトが大きくなりすぎて扱いにくくなるのを防ぐのに役立ちます。
オブジェクト指向プログラミングのパラダイムと非常によく似た2つの概念が、質問への回答に役立ちます。
dependencyManagementのいずれかで、目的は、他のプロジェクトで詳細及び再利用の管理である相続(経由-セクションでは、現在のプロジェクトだけで依存関係とその詳細を宣言する親)またはインポート(スコープ)。これは、プログラムでデータ型を宣言して使用できるようにすることと似ています。
依存セクションは、必要に応じて下に宣言された依存関係の詳細(すなわち、バージョンなど)を継承し、プロジェクト内の依存関係の実際の使用を定義dependencyManagment。これが、それらをdependencyManagmentに配置するだけの場合、依存関係が欠落する理由です。これは、必要なプログラムでデータ型の変数インスタンスをインスタンス化することに似ています。
pom
Aがpom
Bの親である場合、プロジェクトAの依存関係管理にスコープを指定してBを配置できますimport
か?