Maven的版本发布候选者和快照(maven versions release candidates

2019-08-17 14:16发布

我的目标是推出一个项目,有一个单独的依赖。 我有一个关系库,在这里我同时部署快照和发布版本。

在一个依赖我了

group:artifact:1.1.0-SNAPSHOT

和下面的候选发布版在我的Nexus回购释放

group:artifact:1.1.0-RC1

问到版本插件来解决依赖性时,它声称没有新的依赖是可用的。 因此,他认为,

1.1.0-SNAPSHOT > 1.1.0-RC1

然而,如果在我的项目,我有版本1.0.0-快照版本1.1.0-RC1解析为最新版本。

我在想什么? (我看着插件来源,我们有下面的代码片段:

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 );
  }
}

这似乎车给我。 任何的想法?

Answer 1:

Maven的版本号是由如下:

<major version>.<minor version>.<incremental version>-<qualifier>

如果所有的版本号是相等的,限定词按字母顺序进行比较。 “RC1”和“快照”,并分类没有区别为“A”和“B”。 其结果是,“快照”,被认为是新的,因为它是按字母顺序越大。 见这个页面作为参考。

需要注意的是abc-RC1-SNAPSHOT将被视为比旧abc-RC1

我不知道什么建议的解决方案 - 这是Maven,那么如何版本的作品。



Answer 2:

规格只有major.minor.increment-预选赛资格的工作由lexigographical顺序相比,独立beeing快照或什么的。

我结束了分叉Maven的版本,插件和实现我自己的版本方案,该方案考虑到候选发布版的快照版本总是较旧的发布候选本身。

这不是太难实现,我从延长

org/codehaus/mojo/versions/ordering/MavenVersionComparator 

并通过在自己的类中声明

org/codehaus/mojo/versions/ordering/VersionComparators.java

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



文章来源: maven versions release candidates and snapshot