2011-02-09 46 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年。那时,你将不得不进行调查。

相关问题