2011-07-08 10 views
1

私はIvyを使用して、内部で開発されたライブラリと第三者のライブラリから複合アプリケーションをアセンブルしています。 Ivyは、上記のライブラリを構築するための依存関係を管理するために使用されます。各ライブラリには、使用可能で、組み立てられたアプリケーション内で使用できる複数の互換性のあるバージョンがあります。問題は、どのようにしてivyが依存関係の最新バージョンを選択しないようにすることができるかということです。私は、次の例を示してみましょう:Ivyを使用してアップストリームの依存関係の依存関係の範囲を制御する方法はありますか?

  • A [3]:B [2.5 +]、C [1.3 +]

パッケージAは、任意のバージョンのBのパッケージに依存することを意味します2.5.0-2.5.X(2.5のブランチ内には改変はありません。つまり、その範囲内のすべてのバージョンが互換性があります)。

  • アプリケーション::[3]

これはすべて抽出するためにアイビーを指示します同じロジックをアプリケーションアセンブリ時にC.

に適用され、私は単純に言うIvy.xmlファイルを定義しますAと互換性がある範囲内のBとCの最新バージョン。いくつかのビジネス上の制約のために、私は「言いたい」:「定義された範囲でBの最新バージョンの代わりにバージョン2.5.6を特に使用する」(2.5.7も存在するとします)だから、代わりに私が言いたいの上の何かのように:

  • アプリケーション:[3]、B [2.5.6]

問題はアイビーがBを立ち退かすること[2.5.6]です2.5.7を支持している。だから、ある種の紛争マネージャーを使用する必要があります。私は最新のと考えていましたが、追加の範囲を指定することができれば幸いです。私はそれの例を見つけることができません。もちろん、私の推測は正しかったとされています...

答えて

2

属性のdependency宣言の属性がすべて必要な場合があります。

問題が解決しない場合、私は紛争管理上のツタのドキュメントを読むことをお勧めしたいが:

+0

はい、チェックしてください。 「力」はうまく働き、簡単です。ありがとう、マーク。 – AlexeiOst

2

答えは、私はそれを見ることができなかったので、近くにありました...

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">  
<info organisation="some" module="application" /> 

<publications> 
    <artifact name="application" ext="zip" /> 
</publications> 

<dependencies> 
    <dependency org="some" name="A" rev="2.8.+" branch="2.8"> 
     <artifact name="A" ext="zip"/> 
    </dependency> 
    <dependency org="some" name="B" rev="2.5.6" branch="2.5"> 
     <artifact name="B" ext="zip"/> 
    </dependency> 
    <conflict org="some" module="B" rev="2.5.6"/> 
</dependencies> 

他人に役立つことを望みます。

関連する問題