9

我试图弄清楚 Maven 对自定义限定符的政策是什么。我知道 Maven 检查的版本字符串中存在特定的限定符,例如:

1.0.0-快照

5.3.0-beta-5

等等,但我想知道我是否可以编写特定的规则或可以处理自定义限定符的东西,例如:

1.0.0-mybranch

5.3.0-myotherbranch

或者 Maven 将如何处理这样的版本字符串。我已经尝试过了,一切似乎都很好,我只是想知道 Maven 是否有一些可以使用的自定义逻辑。

谢谢!

4

2 回答 2

8

这些示例可以正常工作。

限定符没有特殊含义,除了:

  • SNAPSHOT,它被转换为正确的时间戳/内部版本号
  • 仅是数值,实际上是内部版本号而不是限定符(并且被认为比相应的基本版本更新)

所有限定符都被认为比相关版本更旧,即 1.2-beta-1 < 1.2

限定符的比较是作为字符串比较完成的。这种行为在 Maven 2.x 和 Maven 3.x 中可能有所不同(在前者中,1.0-beta-10 < 1.0-beta-5,在后者中,它的行为与您预期的相反)。

于 2011-08-16T03:42:51.827 回答
6

2011 年的答案现在在许多重要细节上已经过时了。有关当前版本处理逻辑,请参阅https://maven.apache.org/ref/3.3.9/maven-artifact/apidocs/org/apache/maven/artifact/versioning/ComparableVersion.html上的 Javadoc 和 Wiki 链接.

cf maven 如何对版本号进行排序?对 Javadoc 的评论ComparableVersion

于 2016-08-04T21:06:02.297 回答