当前位置: 首页 > 知识库问答 >
问题:

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

徐卓
2023-03-14

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

我唯一的依赖性

group:artifact:1.1.0-SNAPSHOT

我的nexus repo中发布了以下候选版本

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

对我来说这辆车似乎有问题。有什么想法吗?

共有3个答案

端木野
2023-03-14

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

具有限定符的所有版本都比没有限定符的同一版本(发布版本)旧。

例如:

1.2-β-2早于1.2。

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

例如:

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

Maven对待快照限定符的方式不同于其他所有限定符。如果版本号后跟-SNAPSHOT,那么Maven将其视为相关MajorVersion、MinorVersion或IncrementalVersion的“尚未发布”版本。

哈烨熠
2023-03-14

“规格”仅适用于“主要”。少数的通过lexigographic顺序比较合格的增量限定符,独立于beeing snapshot或其他内容。

我结束了分叉maven-versions-plugin和实现我自己的版本方案,认为发布版本的快照版本总是比发布版本本身更旧。

这并不难实现,我从

org/codehaus/mojo/versions/ordering/MavenVersionComparator 

并在中由自己的类声明

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

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

衡修洁
2023-03-14

Maven版本号包括以下内容:

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

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

请注意,将认为a.b.c-RC1-SNAPSHOT比a.b.c-RC1早。

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

 类似资料:
  • 所有POM都有作为它们的版本,也在dependencies标签下。它通过上传到Nexus repo。 我们最近开始做。因此,所有20个父POM现在都是和版本,因为它们都位于nexus中。所有标记现在都指向 开发人员不想指向发布版本。他们需要来自同行的edge开发版本,不管它是否不稳定。 SCM只希望指向版本,因为他必须每周执行一次,但由于指向快照版本而失败。 现在我知道了版本插件,但问题是,我应该

  • 我们在maven发行版和maven版本插件上有一个问题。在詹金斯,我们想做释放自动按下一个按钮。为了消除快照依赖关系,我们希望使用maven versions插件。假设我们有两个项目A(最新版本0.0.1,最新快照0.0.2-快照)和项目B,它们依赖于Projecta-0.0.2-快照,我们希望发布项目B,我们如何将项目Bs依赖项升级到最新可用的发布版本?maven versions插件目标“us

  • 版本号 采用三位版本号,分别是主版本号、次版本号、修订版本号。例如 5.1.2。 参见: http://semver.org/lang/zh-CN/。 主版本号:主版本号内的所有版本必须相互兼容;与其它主版本号不一定完全兼容,尽量向下兼容。 次版本号:代表新特性增强。版本号越大特性越丰富。 修订版本号:代表BugFix版本。只做bug修复使用,版本号越大越稳定。 版本维护 最多同时维护两个版本。

  • 我有以下项目结构: 框架 框架父pom 构架某事 在框架-父母-pom的pom.xml中,我定义了以下插件: 并遵循SCM: 当我运行以下命令时。。。 ……一切似乎都很顺利。 在本地创建了带有发布版本的JAR,并且POM很好地更新到下一个SNAPSHOT版本。同样在SVN中,乍一看似乎还可以。标签已创建,其中包含所有框架项目。 但是,当查看标记的POM时,我看到它们仍然具有初始快照版本作为版本。这

  • 我有一个奇怪的问题,我的调试版本工作正常,但是在签署并生成一个应用程序包后,我将其上传到Play商店,该应用程序立即崩溃(我在具有我的应用程序的商店版本的手机上运行LogCat,我看到它与AndroidX ConstraintLayout有关,但无法复制它)。我认为和版本之间有一些区别,所以我开始调试我的发布版本。 当我这样做时,Android Studio无法安装APK,出现以下错误: 安装失败

  • 本页介绍了 MOSN 的 版本发布步骤。 MOSN 版本发布步骤 一、冻结代码 在准备一个版本发布期间,停止代码往 master 分支的合并 二、整理 Release notes 基于 Github 的 PullRequest 记录,整理本次发布的内容与上一个版本之间的差异,需要注意仅统计目标分支是 master 且正常合并的 PullRequest 首先记录原始的信息,统一记录在 MOSN Re