3

私のモジュールAはモジュールBとCに依存しており、どちらもモジュールDの異なるバージョンに依存しています。私のIvyの依存関係は次のようになります。

<ivy-module>
<info organisation="com.a" module="A"/>
<configurations defaultconf="runtime">
    <conf name="runtime"/>
</configurations>
<dependencies>    
    <dependency org="org.b" name="B" rev="2.0" conf="runtime->default" />    
    <dependency org="org.c" name="C" rev="2.4" conf="runtime->default" />
    <conflict org="org.d" module="D" rev="2.4"/>
</dependencies>
</ivy-module>

厳密な競合解決マネージャーを使用していますが、競合を正しく指摘しています。

[ivy:retrieve] :: Apache Ivy 2.3.0-rc2 - 20121105223351 :: http://ant.apache.org/ivy/ ::
...
...
[ivy:retrieve] :::: ERRORS
[ivy:retrieve]  org.d#D;2.3 (needed by [org.c#C;2.4]) conflicts with org.d#D;2.4 (needed by [org.b#B;2.0])

競合タグがIvyにモジュールDのバージョン2.4を使用するように指示しないのはなぜですか?別のプロジェクトのpom/ivyで言及されているバージョンの依存関係を使用しないリスクをどこで取っているかが明確になるように、厳密な競合解決を使用してから、一度に1つずつ競合をオーバーライドしたいと思います。org.dの除外をorg.c依存関係に追加すると、競合が削除されますが、競合タグを使用する方が、ファイルの将来の読者にとってより明確であるように思われます。

4

1 に答える 1