27

Maven Pomに見られるすべての推移的な依存関係を削除することは良い習慣だと思いますか?

例:
私のプロジェクトはAとBに依存しています
。BもAの推移的な依存関係です
。Bをpomに保持するか、削除する必要がありますか?

最良のものは何ですか:
すべての既知のjarを、推移的なものも含めて、pomで宣言するか、トップレベルのjarのみを保持しますか?

これは少し主観的ですが、推移的な依存関係がたくさんある巨大なpom(親と子)をクリーンアップしようとしています。私は自分のpomをできるだけシンプルに保ちたいと思っていますが、それらも保守可能でありたいと思っています。

4

2 に答える 2

26

プロジェクトにBへの直接の依存関係がある場合は、BがAの推移的な依存関係であっても、それを維持する必要があります。次のバージョンでは、AがBを使用しないため、pom.xmlを再構築する必要があります。

一般に、Mavenの依存関係は、論理的なプロジェクトの依存関係を反映する必要があります。

于 2010-11-19T16:25:40.670 に答える
14

推移的な依存関係の宣言を避け、正当な理由がある場合は明示的にpomに含めたいと思います。これが私の議論です:

  • はpomをできるだけシンプルに保つようにしています。推移的な依存関係が宣言されていると、それらが明示的に使用されている場合でも、Mavenpomはより冗長になります。

推移的な依存関係を宣言することにより(明示的に必要な場合でも):

  • この情報は、必要なアーティファクトのpom記述子にすでに含まれているため、宣言に冗長性が導入されています。

  • 必要なアーティファクトの新しいバージョンがもう依存していない場合、それが明示的に宣言されていれば、自分でアセンブリからtransitive dependencyを削除する必要があります。transitive dependencytransitive dependency

  • 推移性の情報は、推移的な依存関係を明示的に宣言することによって操作されます。

次の場合は、依存関係を明示的に含めるのが理にかなっています。

  • 推移的な依存関係の異なるバージョンを必要とするC(またはプロジェクト内 の特定のバージョンを必要とする)2つの依存関係があります。この場合、のバージョンを選択し、推移的な依存関係を明示的に定義する必要があります。(*)DBBBT

結論:アーティファクトを具体的に宣言することが理にかなっていない限り((*)の場合のように)、宣言は避けようとします。

于 2011-11-10T15:27:35.333 に答える