我维护一个开源项目并将其发布到中央存储库。我刚发表oshi-core-2.6
。我pom.xml
的那个版本的版本控制如下:
<groupId>com.github.dblock</groupId>
<artifactId>oshi-core</artifactId>
<version>2.6</version>
由于日期/时间功能,我的代码需要 Java 8。为了支持用户的请求,就在此版本之前,我发布了一个使用threeten backport 的Java 7 兼容版本,其中包含以下内容pom.xml
:
<groupId>com.github.dblock</groupId>
<artifactId>oshi-core</artifactId>
<version>2.6-m-java7</version>
版本号在 Maven 中的工作方式声明“所有带有限定符的版本都比没有限定符的相同版本(发行版)旧”。另一个 StackOverflow 问题,Maven 如何对版本号进行排序?,有一个引用ComparableVersion类的答案,该类列出了几个众所周知的限定符(alpha、beta、里程碑、rc 和快照),它们应该比 ga/final(空字符串)版本“更早”排序。
由于在早期版本中使用了自定义限定符,我尝试-m-
在我的 java7 版本中使用里程碑限定符 ( ) 向 Maven 表明它应该是比 2.6 更“早”的版本。但是,搜索中央存储库显示该-m-
版本是“最新版本”。
我的问题:
- 为什么中央存储库排序与我上面链接的记录排序不匹配?
- 是否使用了 Maven 排序的早期版本(pre-3.2)?如果是这样,我可以期待什么一致的“最新版本”排序?
- 我的工件名称中的连字符有什么影响吗?
- 有没有比我选择的方式(显然很糟糕)更好的方式以两种格式发布相同的版本号?