首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中央存储库如何排序版本号?

中央存储库如何排序版本号?
EN

Stack Overflow用户
提问于 2016-06-17 01:15:55
回答 1查看 585关注 0票数 0

我维护一个开源项目,并将其发布到中央仓库。我刚出版了oshi-core-2.6。在我的pom.xml中,该版本的版本如下:

代码语言:javascript
复制
<groupId>com.github.dblock</groupId>
<artifactId>oshi-core</artifactId>
<version>2.6</version>

由于日期/时间函数,我的代码需要Java 8。为了支持用户的请求,就在这个版本发布之前,我在它的pom.xml中发布了一个与Java7兼容的版本,它使用了三个backport

代码语言:javascript
复制
<groupId>com.github.dblock</groupId>
<artifactId>oshi-core</artifactId>
<version>2.6-m-java7</version>

版本号在Maven中的工作方式指出,“所有带有限定符的版本都比没有限定符的相同版本(发布版本)更早。”另一个StackOverflow问题,maven如何对版本号进行排序?,引用了ComparableVersion类的答案,该类列出了几个著名的限定符(alpha、beta、里程碑、rc和快照),这些限定符应该比ga/final (空字符串)版本“早”排序。

由于在早期版本中有一个自定义限定符,我尝试使用java7版本中的里程碑限定符(Java7)向Maven指出,它应该是一个比2.6更早的版本。然而,搜寻中央仓库显示-m-版本是“最新版本”。

我有以下问题:

  • 为什么中央存储库排序与我上面链接的文档排序不匹配?
    • 它是否使用了Maven排序的早期版本(预3.2)?如果是这样的话,我可以期望有什么一致的“最新版本”排序吗?
    • 我的神器名称中的连字符有什么影响吗?

  • 是否有更好的方法以两种格式发布相同的版本号,而不是我所选择的方式(显然很糟糕)?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-17 07:22:19

这是一个分类器的工作,而不是那种奇怪的版本。

  • 2.6与分类器: JDK 8的"jdk8“
  • 2.6加上分类器:"jdk7“等。

此外,Oracle引用的文档对于Maven 2有效,但对Maven 3无效。

除此之外,我建议在符号学的基础上增加这类无法对抗的更改的主要版本。

此外,您使用alpha引用ComparableVersion,等等,这就是Maven内部处理版本的方式。这可以查看那类的单元测试

但是,您可以通过一个小命令行工具检查Maven的行为:

代码语言:javascript
复制
java -jar apache-maven-3.3.9\lib\maven-artifact-3.3.9.jar 1.0.0 2.0.0
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 1.0.0 == 1
   1.0.0 < 2.0.0
2. 2.0.0 == 2

通过使用它,您可以看到Maven 3+处理的2.6-m-java7大于2.6

代码语言:javascript
复制
java -jar apache-maven-3.3.9\lib\maven-artifact-3.3.9.jar 2.6-m-java7 2.6
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.6-m-java7 == 2.6-m-java-7
   2.6-m-java7 > 2.6
2. 2.6 == 2.6

所以这就是为什么中央也处理它更大的原因。

因此,如果您使用诸如rcalpha之类的东西,您将看到结果:

代码语言:javascript
复制
java -jar apache-maven-3.3.9\lib\maven-artifact-3.3.9.jar 2.6-alpha 2.6
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.6-alpha == 2.6-alpha
   2.6-alpha < 2.6
2. 2.6 == 2.6

java -jar apache-maven-3.3.9\lib\maven-artifact-3.3.9.jar 2.6-rc1 2.6
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.6-rc1 == 2.6-rc-1
   2.6-rc1 < 2.6
2. 2.6 == 2.6

(上面的CLI工具可以从Maven 3.2.5中获得)。

最好的解决方案是有一个模块来产生您通常的工件。创建一个包含JDK 7配置的补充模块,在那里您可以使用"threeten“并创建其他工件。这些工件应该有这样的分类器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37871662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档