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

Not seeing latest dependency version when I run versions:display-dependency-updates

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

不幸的是,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

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

我一般用http://mvnrepository.com to find the latest version of an artifact, while you have used 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 显示依赖更新的描述