【问题标题】:Does Maven artifact metadata reveal whether artifact is stable release?Maven 工件元数据是否显示工件是否是稳定版本?
【发布时间】:2020-12-23 18:49:16
【问题描述】:

部署到远程存储库的 Maven 工件或其元数据是否允许可靠地确定工件是否是稳定版本?

快照有后缀SNAPSHOT,但也有alpha、beta和pre-release,命名不一定一致,例如:

https://mvnrepository.com 以不同的方式突出显示非发布版本,但也许它只是在寻找某些关键字?

(source)

【问题讨论】:

  • 由此产生的问题是:如何定义稳定版本?
  • 在 Maven SNAPSHOT 中,通常不使用 SNAPSHOT 作为后缀...它们有 always 后缀...
  • @khmarbaise,我已经更正了关于快照的错误陈述,谢谢。我会说是工件的创造者决定了它是否稳定。创作者选择发布“测试版”而不是完整版肯定是有原因的,我认为这是(尚未经过广泛测试的)稳定性。
  • 我可以说 maven-surefire-plugin 版本 3.0.0-M5 我在生产中使用它...我称之为足够稳定...经过足够测试?插件等有一个大型测试套件......我会进行 2.500 次测试吗? ci-builds.apache.org/job/Maven/job/maven-box/job/maven-surefire/…在我看来非常好...
  • @khmarbaise Re“他们总是有后缀...”——这仅适用于本地 Maven 存储库。在由存储库管理器管理的远程存储库上,快照通常具有时间戳 + 序列限定符,例如Nexus:“where the actual number used is composed of a date/timestamp and an enumerator”。

标签: maven


【解决方案1】:

请参阅POM Reference,其中详细说明了从Dependency Version Requirement Specification 部分开始的版本号:

如果版本字符串在语法上是正确的Semantic Versioning 1.0.0 版本号,那么几乎在所有情况下,版本比较都遵循该规范中概述的优先规则。 [...]

[...]

当版本字符串不遵循语义版本控制时,需要一组更复杂的规则。 [...] 这给出了一系列版本号(数字标记)和带有“。”的版本限定符(非数字标记)。或“-”前缀。

所以,alpha1beta2M5rc-2RC1 是:

a) 用于“预发布版本 [...] 表示为紧跟补丁版本和破折号后附加任意字符串。”根据点4.Semantic Versioning Specification (SemVer)

b) (pre-)版本的所有限定符,而不是快照,其中M 代表milestone

在内容方面,您只能相信工件创建者,他们采用了代表工件实际状态的适当限定符。

【讨论】:

  • 谢谢,POM 参考最有帮助,因为它定义了:“除了以下按此顺序排在最前面的标记”,SemVer 排序不适用。这些实际上列出了我在答案中的所有示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 2011-06-16
  • 1970-01-01
  • 2017-12-18
  • 2017-10-11
  • 1970-01-01
  • 2012-03-07
相关资源
最近更新 更多