Maven非标准版本控制意外的最新版本结果

Posted

技术标签:

【中文标题】Maven非标准版本控制意外的最新版本结果【英文标题】:Unexpected latest version result by maven non-standard versioning 【发布时间】:2019-11-10 01:44:18 【问题描述】:

提到here

如果您在项目版本控制方案中不遵循 Maven 版本控制标准,那么对于版本比较,Maven 会将整个版本解释为一个简单的字符串

从示例中,我们可以看到1.0.9.3 应该比1.0.10.1 更更新

1.0.1.0 
1.0.10.1
1.0.10.2
1.0.9.3 < most updated version

我目前正在从事一个项目。它依赖于包com.example.http,该包的版本为1.0.12.2。现在有几个更新。版本的子集是(1.0.01.0.91.0.12.21.0.16)。由于它不遵循 Maven 版本控制标准,我希望这些版本的顺序是:

1.0.0
1.0.12.2
1.0.16
1.0.9

第一季度: 但是,当我运行mvn versions:display-dependency-updates 时,它说1.0.16 是最新版本。为什么?

第二季度: 我应该做些什么来删除非标准的1.0.12.2吗?注意:除1.0.12.x 外,所有都遵循maven 版本控制标准

[INFO] com.example:http ............................ 1.0.12.2 -&gt; 1.0.16

【问题讨论】:

首先,您提供的链接不再正确,因为这适用于 Maven 2.X,但我希望您使用的是 Maven 3.X?此外,为什么版本 1.0.9.3 应该比版本 1.0.10.2 更新。这根本没有意义。另一个问题:为什么项目产生的版本不遵循语义版本和与任何逻辑相矛盾的东西? @khmarbaise 感谢您提供信息。我只是说1.0.9.3 应该比1.0.10.2 更新。我只是期望这种行为,因为(过时的)文档是这样说的。只是好奇最新版本是否有任何最佳实践或约定? 是的,只需遵循语义版本控制semver.org,除此之外,1.0.9.31.0.10.2..order 1.0.9.3、1.0.9.4 等更早,然后是 1.0.10.0、1.0。 10.1 和 1.0.10.3 ...文档来自 Oracle,完全错误,与 Apache Maven 项目无关。阅读 JF Meier 提到的我的博客文章...顺便说一句:请更改您的帖子,特别是来自该链接的引用并将其标记为不再有效! 【参考方案1】:

机制大约在 10 年前发生了变化,因此您的信息已经过时。 Maven 能够对任意长的版本号进行排序,参见例如https://blog.soebes.de/blog/2017/02/04/apache-maven-how-version-comparison-works/

更多信息也可以在答案https://***.com/a/31482463/927493中找到

【讨论】:

谢谢。我看到现在版本控制比以前更灵活。只是好奇最新版本是否有任何最佳实践或约定? AFAIK,许多人使用带有三个或四个数字的版本号,major.minor.bugfixmajor.minor.bugfix-buildnumber。根据上下文,您可能希望使用 BETA、RC 或 SP 等结尾。

以上是关于Maven非标准版本控制意外的最新版本结果的主要内容,如果未能解决你的问题,请参考以下文章

让maven如何自动发现最新版本jar包

pip 意外没有安装带有分支/提交固定的最新版本的 git 包

IPC-A-600标准最新版本是哪一版, 谁有(中英文版本)?分享一下了!

Maven 中父项目的最新版本

Maven - 当 pom 版本为快照时生成最新版本 jar

Maven检查最新版本,只发布不快照