我的目标是发布一个具有单个依赖项的项目。我有一个关系存储库,在其中部署了快照和发行版。
我有一个依赖
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版本控制的工作方式。