【问题标题】:What is the Ivy equivalent of Maven's versions:display-dependency-updates?Maven 版本的 Ivy 等价物是什么:display-dependency-updates?
【发布时间】:2011-06-24 10:00:53
【问题描述】:

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

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

【问题讨论】:

    标签: maven-2 maven ivy dependency-management


    【解决方案1】:

    和你一样,我只对内部依赖项使用动态版本。升级时,在新的开发阶段开始时,我会使用其中一个存储库搜索工具来发现新版本的 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>
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我不确定这是否是最佳解决方案,但您可以创建一个要求最新版本的配置(例如“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 版本。但是,如果您查看 Ivy 生成的报告上的发布日期,您应该很清楚发生了一些事情,而最新的发布时间是 2007 年。到那时,您将不得不进行调查。

        【讨论】:

          【解决方案4】:

          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
          

          【讨论】:

            猜你喜欢
            • 2023-04-07
            • 1970-01-01
            • 2014-08-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多