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.0
、1.0.9
、1.0.12.2
、1.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 -> 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.3
比1.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.bugfix
或 major.minor.bugfix-buildnumber
。根据上下文,您可能希望使用 BETA、RC 或 SP 等结尾。以上是关于Maven非标准版本控制意外的最新版本结果的主要内容,如果未能解决你的问题,请参考以下文章
pip 意外没有安装带有分支/提交固定的最新版本的 git 包
IPC-A-600标准最新版本是哪一版, 谁有(中英文版本)?分享一下了!