首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven版本发布候选版本和快照

maven版本发布候选版本和快照
EN

Stack Overflow用户
提问于 2013-03-15 01:03:57
回答 3查看 11K关注 0票数 6

我的目标是发布一个只有一个依赖项的项目。我有一个nexus库,我在其中部署快照和发布版本。

我有一个依赖项

代码语言:javascript
复制
group:artifact:1.1.0-SNAPSHOT

下面的候选版本在我的nexus中发布

代码语言:javascript
复制
group:artifact:1.1.0-RC1

当请求版本插件解决依赖关系时,它声称没有新的依赖关系可用。所以他认为

代码语言:javascript
复制
1.1.0-SNAPSHOT > 1.1.0-RC1

但是,如果在我的项目中,我有版本1.0.0-快照,版本1.1.0-RC1被解析为最新版本。

我遗漏了什么?(我查看了插件来源,我们有以下代码片段:

代码语言:javascript
复制
String otherQualifier = otherVersion.getQualifier();

if ( otherQualifier != null )
{
  if ( ( qualifier.length() > otherQualifier.length() )
      && qualifier.startsWith( otherQualifier ) )
  {
    // here, the longer one that otherwise match is considered older
    result = -1;
  }
  else if ( ( qualifier.length() < otherQualifier.length() )
      && otherQualifier.startsWith( qualifier ) )
  {
    // here, the longer one that otherwise match is considered older
    result = 1;
  }
  else
  {
    result = qualifier.compareTo( otherQualifier );
  }
}

这在我看来是错误的。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-15 05:16:42

Maven版本号组成如下:

代码语言:javascript
复制
<major version>.<minor version>.<incremental version>-<qualifier>

如果所有版本号都相等,则按字母顺序比较限定符。"RC1“和"SNAPSHOT”,并且与"a“和"b”的排序没有区别。因此,"SNAPSHOT“被认为是较新的,因为它在字母顺序上更大。请参阅this page作为参考。

请注意,a.b.c-RC1-SNAPSHOT将被认为比a.b.c-RC1__更老。

我不确定该建议什么作为解决方案--这就是Maven版本控制的工作方式。

票数 10
EN

Stack Overflow用户

发布于 2014-04-01 22:39:54

Specs只适用于MAJOR.MINOR.INCREMENT-限定符与词法顺序的限定比较,独立于beeing等。

我最终创建了maven- versions -plugin并实现了我自己的版本方案,该方案认为候选发布版本的快照版本总是比候选发布版本更老。

这并不是很难实现,我从

代码语言:javascript
复制
org/codehaus/mojo/versions/ordering/MavenVersionComparator 

并由自己的类在

代码语言:javascript
复制
org/codehaus/mojo/versions/ordering/VersionComparators.java

并实现了我自己的业务逻辑

票数 0
EN

Stack Overflow用户

发布于 2021-05-14 20:53:27

截至https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm

所有带限定符的版本都比不带限定符的相同版本(发布版本)旧。

例如:

1.2-beta-2早于1.2。

使用基本字符串比较来比较具有不同限定符字段的相同版本。

例如:

1.2-beta-2比1.2-alpha-6更新。

Maven对待快照限定符的方式与对待所有其他限定符的方式不同。如果版本号后面跟着-SNAPSHOT,那么Maven就会认为它是关联的MajorVersion、MinorVersion或IncrementalVersion的“尚未发布”版本。

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

https://stackoverflow.com/questions/15415666

复制
相关文章

相似问题

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