我运行版本时没有看到最新的依赖版本:display-dependency-updates

时间:2016-06-07 17:37:49

标签: maven pom.xml dependency-management maven-central versions-maven-plugin

我正在尝试将我的java mvn项目中的依赖项更新为最新版本。当我在命令下运行时,我看到显示的是最新版本,但我在中央存储库中看到了不同的版本。

mvn versions:display-dependency-updates -DskipTests=true --update-snapshots install

例如,当我在命令上面运行时,我得到了这个用于commons-collections

commons-collections:commons-collections ............ 3.2.1 -> 20040616

但是当我在中央存储库中浏览它时,commons-collections:MVN Repo,  我在20040616之后看到很多更新

有人可以澄清哪个是最新版本和MVN命令来获取最新版本?

3 个答案:

答案 0 :(得分:1)

不幸的是,Maven不知道依赖项何时发布,只是比较文本

在您的情况下, commons-collections:commons-collections 的最新版本为3.2.1,但如果您比较文字,则20040616会更大。

基本上20040616> 3.2.1因为它认为20040616是主要版本,且大于3

在此处阅读更多内容:https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402

答案 1 :(得分:1)

display-dependency-updates命令假定版本根据versions-maven-plugin Version Number Rules的非常具体的<Major>.<Minor>.<Incremental>-<Qualifier>结构进行编号。它通过根据这些标准进行排序来确定“最新”,而不是通过某种时间戳。当使用遵循不同规则的依赖关系时,它不太可能告诉您哪个版本实际上更新。遗憾的是,这使得显示依赖性更新不像人们希望的那样有用,但我仍然认为它有用作检查和查看可能需要更新的依赖项的起点。

答案 2 :(得分:1)

我通常使用http://mvnrepository.com来查找工件的最新版本,而您使用的是http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22commons-collections%22%20AND%20a%3A%22commons-collections%22。但是,我看到了类似的问题。 20040616不是工件的日期,它是工件的版本。由于20040616大于1,2,3或4,因此版本20040616将始终被视为最新版本。似乎应该从存储库中删除此工件,因为它不遵守编号规则。我在存储库中看到过这样的其他一些问题,但我不确定联系谁来纠正它。

http://www.mojohaus.org/versions-maven-plugin/display-dependency-updates-mojo.html display-dependency-updates的描述