我的目标是发布一个具有单个依赖项的项目。我有一个关系存储库,在其中部署了快照和发行版。

我有一个依赖

group:artifact:1.1.0-SNAPSHOT

并且以下发布候选版本已在我的关系仓库中发布
group:artifact:1.1.0-RC1

当要求版本插件解决依赖性时,它声称没有新的依赖性可用。所以他认为
1.1.0-SNAPSHOT > 1.1.0-RC1

但是,如果在我的项目中,我具有1.0.0-SNAPSHOT版本,则将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 );
  }
}

在我看来,这是有问题的。任何想法?

最佳答案

Maven版本号包括以下内容:

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

如果所有版本号都相等,则按字母顺序比较该限定符。 “RC1”和“SNAPSHOT”与“a”和“b”的排序没有不同。结果,“SNAPSHOT”被认为是较新的,因为它的字母顺序更大。请参阅this page作为引用。

请注意,a.b.c-RC1-SNAPSHOT将被视为早于a.b.c-RC1

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

09-15 11:42