3

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

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

4

4 回答 4

2

和你一样,我只对内部依赖项使用动态版本。升级时,在新的开发阶段开始时,我会使用其中一个存储库搜索工具来发现 3rd 方库的新版本:

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

我的建议是生成一个 ivy 依赖项报告并使用它来查看代码的模块使用情况。我发现这非常有用,特别是考虑到一些 3rd 方 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>

希望这会有所帮助....如果您找到一种自动管理此问题的方法,我会很感兴趣。

于 2011-02-11T08:21:03.333 回答
1

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

于 2011-04-01T17:59:50.017 回答
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 年。那时,您将不得不进行调查。

于 2012-07-02T12:59:37.327 回答
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
于 2018-10-22T20:58:49.713 回答