我的目标是发布一个只有一个依赖项的项目。我有一个nexus库,我在其中部署快照和发布版本。
我有一个依赖项
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 );
}
}这在我看来是错误的。有什么想法吗?
发布于 2013-03-15 05:16:42
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版本控制的工作方式。
发布于 2014-04-01 22:39:54
Specs只适用于MAJOR.MINOR.INCREMENT-限定符与词法顺序的限定比较,独立于beeing等。
我最终创建了maven- versions -plugin并实现了我自己的版本方案,该方案认为候选发布版本的快照版本总是比候选发布版本更老。
这并不是很难实现,我从
org/codehaus/mojo/versions/ordering/MavenVersionComparator 并由自己的类在
org/codehaus/mojo/versions/ordering/VersionComparators.java并实现了我自己的业务逻辑
发布于 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的“尚未发布”版本。
https://stackoverflow.com/questions/15415666
复制相似问题