2011-02-09 47 views
3

我有一個ivy.xml文件,我明確指定了我的依賴關係。 Ivy中是否有任何功能可以讓我發現或自動更新過時的依賴關係?什麼是Maven版本的Ivy等效值:display-dependency-updates?

我不想使用latest.release,因爲我想要一個完全穩定和可重複的構建。但每隔一段時間,我都會想更新一些依賴關係,同時回答這個問題是很好的,哪些其他依賴關係已過時?

回答

2

像你一樣,我只使用動態版本的內部依賴。升級時,在一個新的發展階段的開始,我會使用的庫搜索工具之一來發現第三方庫的新版本:

正如我」確保你意識到,另一個問題是,升級依賴關係往往會導致你的傳遞依賴性的非自願升級......

我建議的是生成一個常春藤依賴項報告,並使用此t o檢查你的代碼的模塊使用情況。我覺得這非常有用,特別是考慮到一些第三方Maven模塊的表現不佳,並會將許多不必要的庫導入到我的類路徑中。

以下是我的標準依賴目標的一個例子:

<target name='dependencies' description='Resolve project dependencies and set classpaths'> 
    <ivy:resolve/> 
    <ivy:report todir='${ivy.reports}' graph='false' xml='false'/> 

    <ivy:cachepath pathid="compile.path" conf="compile"/> 
    <ivy:cachepath pathid="provided.path" conf="provided"/> 
    <ivy:cachepath pathid="runtime.path" conf="runtime"/> 
    <ivy:cachepath pathid="test.path"  conf="test"/> 
    </target> 

希望這有助於....如果你找到一個方法來自動管理這些我會感興趣。

1

一種解決方法是使用ivy:makepom,然後運行mvn版本:使用生成的pom的display-dependency-updates。

1

我不確定這是否是最佳解決方案,但您可以創建要求最新版本的配置(例如「checklatest」),然後針對該配置運行報告。

例如,在您的ivy.xml文件: ...

<dependencies> 
    .... 
    <dependency org="somegroup" name="somename" 
     rev="latest.release" conf="checklatest->default"/> 
</dependencies> 

,然後運行使用的任務是配置的Ant任務。

即使在那裏,它並不一定會獲得最新版本 - 例如,Apache的commons-httpclient最終被整合到httpcomponents項目中,因此在羣組「commons中請求最新的」commons-httpclient「 「-httpclient」只能找到版本3.1。但是,如果你看一下艾維生成的報告的發佈日期,應該很清楚發生了什麼,最新的發佈是2007年。那時,你將不得不進行調查。

相關問題