1

我试图将我的java mvn项目中的依赖项更新为最新版本。当我在命令下运行时,看到显示的最新版本,但我在中央存储库中看到不同的版本。当我运行版本时看不到最新的依赖项版本:display-dependency-updates

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

例如,当我跑上面的命令,我得到这个为公共的集合

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

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

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

回答

1

显示的依赖,更新命令假定版本是根据一个非常特殊的<Major>.<Minor>.<Incremental>-<Qualifier>结构编号,每个版本,Maven的插件Version Number Rules。它通过按照这些标准进行排序来确定“最新”,而不是通过某种时间戳。当使用遵循不同规则的依赖关系时,它不可能告诉你哪个版本实际上更新。可悲的是,这使得显示依赖性更新几乎没有人会希望的那么有用,但我仍然觉得它作为检查和查看可能需要更新哪些依赖性的起点是有用的。

1

不幸的是Maven并不知道什么时候发布了依赖关系,它只是比较文本

在你的情况下,公地集合的最新版本:公地集合3.2.1,但如果你比较文本,20040616较大。

所以基本上20040616>3.2.1因为它认为20040616是一个主要版本,它大于3

在这里阅读更多:https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402

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的描述