1

我正在尝试将我的 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 命令吗?

4

3 回答 3

1

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

在您的情况下,最新版本的commons-collections:commons-collections3.2.1,但是如果您比较文本,20040616则更大。

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

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

于 2016-06-07T17:48:09.210 回答
1

display-dependency-updates 命令假定版本根据版本编号规则根据非常特定的<Major>.<Minor>.<Incremental>-<Qualifier>结构进行编号。它通过根据这些标准进行排序来确定“最新”,而不是通过某种时间戳。当使用遵循不同规则的依赖项时,它可能无法告诉您哪个版本实际上更新。可悲的是,这使得 display-dependency-updates 几乎没有人们希望的那么有用,但我仍然发现它作为检查和查看可能需要更新哪些依赖项的起点很有用。

于 2016-06-07T17:48:24.450 回答
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 的描述

于 2016-06-07T18:17:00.063 回答