2011-07-08 17 views
1

我使用Ivy從內部開發和第三方庫中組裝一個複合應用程序。常春藤用於管理構建上述庫的依賴關係。對於每個庫,都有多個可用的兼容版本,可以在組裝的應用程序中使用。問題是我如何指導ivy不選擇最新版本的依賴項。讓我說明用下面的例子:使用Ivy控制上游依賴項的依賴關係範圍的一種方法?

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

意味着包A依賴於任何版本的乙包2.5.0-2.5.X(在2.5分支內沒有重大更改,這意味着該範圍內的所有版本都是兼容的)。相同的邏輯適用於C.

在應用裝配時間我限定ivy.xml文件,簡單地說:

  • 應用:A [3]

這將指示常春藤提取所有A與A兼容的範圍內的最新版本的B和C.由於一些商業上的限制,我還想「說」:「在定義的範圍內使用版本2.5.6而不是最新版本的B」(假設2.5.7也存在)。因此,而不是上面我想說的是這樣的:

  • 應用:A [3],B [2.5.6]

的問題是,艾維將驅逐B [2.5.6]贊成2.5.7。所以必須使用某種衝突管理器。我想到最新兼容希望它可以指定一個額外的範圍。我找不到這樣的例子。這是給我的猜測是正確的,當然...

回答

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> 

希望它可以幫助別人:-)

相關問題