Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 常春藤与Maven';s版本:显示依赖项更新?_Maven 2_Maven_Ivy_Dependency Management - Fatal编程技术网

Maven 2 常春藤与Maven';s版本:显示依赖项更新?

Maven 2 常春藤与Maven';s版本:显示依赖项更新?,maven-2,maven,ivy,dependency-management,Maven 2,Maven,Ivy,Dependency Management,我有一个ivy.xml文件,其中明确指定了依赖项。Ivy有没有内置的功能可以让我发现或自动更新过时的依赖项 <dependencies> .... <dependency org="somegroup" name="somename" rev="latest.release" conf="checklatest->default"/> </dependencies> 我不想使用最新版本,因为我想要一个完全稳定和

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

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

我不想使用最新版本,因为我想要一个完全稳定和可复制的构建。但是偶尔我会想更新一些依赖项,同时最好回答以下问题:哪些其他依赖项已过时?

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

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
我相信您也知道,另一个问题是,升级依赖项通常会导致对可传递依赖项的非自愿升级

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
我的建议是生成一个常春藤依赖报告,并使用它来检查代码的模块使用情况。我发现这非常有用,特别是考虑到一些第三方Maven模块的性能不好,会将许多不必要的库导入到我的类路径中

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
以下是我的标准依赖项目标的示例:

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


希望这有帮助。。。。如果你能找到一种自动管理的方法,我会很感兴趣。

一种解决方法是使用ivy:makepom,然后运行mvn版本:使用生成的pom显示依赖项更新。

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

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
例如,在ivy.xml文件中: ...

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

.... 
然后运行一个ant任务,将该任务用于该配置

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
即使在那里,它也不一定会获得最新版本——例如,Apache的commons httpclient最终被合并到httpcomponents项目中,因此请求组“commons httpclient”中的最新“commons httpclient”只能找到版本3.1。但是如果你看一下Ivy生成的报告的发布日期,应该很清楚发生了什么事情,最新的发布日期是2007年。在这一点上,你必须进行调查。

大致相当于常春藤

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
它提供如下输出:

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>
[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