免責事項
(私はもともとここでmaven-users
非常に詳細な方法で質問をしました。この質問についてはメーリングリストが静かになっているので、ここから抜粋しました。)(別の初心者の質問だけではありません)
参照
私の参考資料は http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Managementです。これが古くなっているか間違っている場合は、このディスカッションで知らせてください。
質問
そのドキュメントには、「2番目の非常に重要な...」で始まるセクションがあります。以下では、そのセクションのプロジェクトA
とを参照しB
、それらから抜粋します。
そのセクションでは、プロジェクトA
に、<dependencyManagement>
とりわけ、c
スコープを持つものとしてアーティファクトを定義するセクションがあることがわかりcompile
ます。
<!-- In A's pom.xml; condensed for brevity -->
<dependencyManagement>
<dependency>
<groupId>test</groupId>
<artifactId>c</artifactId>
<version>1.0</version>
<scope>compile</scope> <!-- look: compile scope -->
</dependency>
</dependencyManagement>
次に、(a)プロジェクトから継承し(したがってそのセクションを継承し)、(b)アーティファクトへの依存関係を確立するpom.xml
forプロジェクトが表示されます。そのを指定する必要はありません。また、アーティファクトへの依存は、ではなく、のスコープをオーバーライドすることに気付くでしょう。B
A
dependencyManagement
c
version
c
c
runtime
compile
<!-- In B's pom.xml, whose parent is A's pom.xml (above); condensed for brevity -->
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>c</artifactId>
<scope>runtime</scope> <!-- look: runtime scope -->
</dependency>
</dependencies>
繰り返しになりますが、<version>
要素はありませんが、<scope>runtime</scope>
要素はあります。
これについての私の解釈は、すべてが言われ、行われるとき、スコープではなく、スコープ内のアーティファクトのB
バージョンに依存するということです。1.0
c
runtime
compile
あれは正しいですか?私のmaven-ear-plugin
バグは、これが予想される動作であるという事実に基づいています。maven-ear-plugin
これは、ファイルをビルドするときに起こることではありません.ear
。
次に、それが正しければ、アーティファクトc
に推移runtime
的な依存関係がある場合、それらはB
のクラスパスで利用可能になることも期待します( http://maven.apache.org/guides/introduction/introduction-runtime
のやや不可解な表で定義されています) 。 to-dependency-mechanism.html#Dependency_Scope)。
あれは正しいですか?