什么是常春藤相当于Maven的版本:display-dependency-updates?

时间:2011-02-09 20:24:56

标签: maven-2 maven ivy dependency-management

我有一个ivy.xml文件,我明确指定了我的依赖项。是否有任何内置于Ivy中的功能可以让我发现或自动更新过时的依赖项?

我不想使用latest.release,因为我想要一个完全稳定且可重现的构建。但每隔一段时间我就会想要更新一些依赖项,同时回答这个问题会很好,其他依赖项已经过时了?

4 个答案:

答案 0 :(得分:2)

与您一样,我只使用动态版本来处理内部依赖项。升级时,在新的开发阶段开始时,我会使用其中一个存储库搜索工具来发现第三方库的新版本:

我确信您已经知道,另一个问题是升级依赖项通常会导致您的传递依赖项的非自愿升级....

我建议生成一个常春藤依赖关系报告,并使用它来检查代码的模块用法。我发现这非常有用,特别是考虑到某些第三方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 :(得分:1)

一种解决方法是使用ivy:makepom,然后使用生成的pom运行mvn版本:display-dependency-updates。

答案 2 :(得分:1)

我不确定这是否是最佳解决方案,但您可以创建一个要求提供最新版本的配置(例如“checklatest”),然后针对该版本运行报告。

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

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

然后运行一个使用该配置任务的ant任务。

即使在那里,也不一定会拿起最新版本 - 例如,Apache的commons-httpclient最终被整合到httpcomponents项目中,所以请求组中的最新“commons-httpclient”“commons- httpclient“只会找到版本3.1。但是,如果你看一下Ivy生成的报告上的出版日期,那么当最新的出版物是2007年时,应该很清楚发生某事。那时,你必须进行调查。

答案 3 :(得分:0)

checkdepsupdate与Ivy大致相同。

它为您提供如下输出:

[ivy:checkdepsupdate]   com.sun.mail#javax.mail 1.5.4 -> 1.6.2
[ivy:checkdepsupdate]   commons-codec#commons-codec 1.10 -> 1.11
[ivy:checkdepsupdate]   org.apache.commons#commons-compress 1.12 -> 1.18
[ivy:checkdepsupdate]   commons-dbutils#commons-dbutils 1.5 -> 1.7
[ivy:checkdepsupdate]   commons-io#commons-io   2.4 -> 2.6
[ivy:checkdepsupdate]   org.apache.commons#commons-lang3    3.6 -> 3.8.1
[ivy:checkdepsupdate]   org.apache.commons#commons-text 1.1 -> 1.6
[ivy:checkdepsupdate]   org.apache.poi#poi  3.13 -> 4.0.0