2

pom ファイルで 2 つの依存関係のみを持つモジュールを定義していますが、生成された .classpath ファイル (mvn eclipse:eclipse を使用) には他の依存関係も含まれています。

この pom で追加されたモジュールの依存関係を確認しましたが、すべてが追加されているわけではありません。

したがって、シナリオは次のとおりです。

  • プロジェクト A はプロジェクト B に依存します
  • プロジェクト B は、プロジェクト X、Y、および Z に依存します

プロジェクト A で mvn eclipse:eclipse を実行すると、.classpath ファイルにはプロジェクト B とプロジェクト X および Y が含まれますが、Z は含まれません。

これは何の問題も引き起こしていませんが、これは予期された動作ですか?

4

1 に答える 1

3

はい、これは予想される動作です。プロジェクト B が適切に機能するには X、Y、Z が必要であるため、これらの依存関係 (推移的な依存関係と呼ばれます) は実質的にプロジェクトの一部です。

Maven 依存関係解決の詳細な説明については、これを参照してください。

コマンド ラインからmvn dependency:treeまたはを呼び出して、推移的なものを含むすべての依存関係を確認できます。mvn dependency:list

アーティファクトに依存していることがわかっているが、アプリケーション サーバー上の Java EE ライブラリの場合のように実行時に利用できる場合は、それらを次のようprovidedにマークできますpom

<dependency>
  <groupId>group</groupId>
  <artifactId>artifact</artifactId>
  <version>1.0</version>
  <scope>provided</scope>
</dependency>

これらの依存関係は、結果の atrifact には含まれません。

編集:私の読解力が乏しいことをお許しください:) 「Z」の前の「not」を監督しました。

Z の依存関係が として定義されているprovidedか、optionalフラグが に設定されてtrueいる場合、または Z が除外されている場合、これは正常な動作である可能性があります。オプションおよび除外された依存関係の Maven の処理については、これを参照してください。

これらのオプションのどちらにも当てはまらない場合、Z が他の依存関係と共にそこにあることを期待します。確認する最善の方法は、Z の出力を実行mvn dependency:treeまたはmvn dependency:listgrep することです。

于 2013-04-25T12:23:08.523 に答える