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

使用maven时如何自动将SNAPSHOT依赖项更新到最新发布的版本

慕容念
2023-03-14

我试图为我们的项目定义一个发布过程。

我能够使用maven发布插件来完成发布,但我必须手动更新所有内部快照依赖项,以在准备之前发布版本,然后在发布之后再次返回快照版本。

我使用了maven版本插件,它检测我的公司依赖项,即快照构建,并列出要使用的正确版本构建。

我尝试了maven发布插件,准备目标,并抱怨我的依赖项中的SNAPSHOT版本。

是否有一种方法可以将快照依赖项更新到最新发布的版本,然后在发布后返回到快照版本?或者,这可能不是您使用maven发布和快照的方式。

共有1个答案

曾沛
2023-03-14

当您使用maven创建realyi时:它必须是确定的。即一旦创建,它就不能再更改了(即源不能更改并且依赖项不能更改)。

因此,当您创建moduleA的发行版时,moduleA依赖于moduleB。moduleB必须在moduleA发布之前发布,moduleA必须依赖于moduleB的发布版本。

重要的一点是,您不应该返回快照版本。至少据我所知,这意味着:

  • 创建模块B-1.0.0版本
  • 将依赖关系更改为moduleB-1.0.0
  • 创建moduleA-1.0.0版本
  • 然后将依赖关系更改回moduleB-1.0.0-SNAPSHOT

必须明确的是,一旦moduleB-1.0.0存在(即发布),就不应再使用工件moduleB-1.0.0-SNAPSHOT。

而不是回到SNAPSHOT应该更新依赖到下一个SNAPSHOT版本(例如moduleB-SNAPSHOT-1.0.1)

也就是说,释放依赖于许多快照工件的模块不是一个容易的过程,因为每个依赖项都必须在释放主工件之前释放。

大多数时候,我们拥有的是一个主要工件,它依赖于具有相同版本策略的许多其他工件(让我们称之为企业模块)。因此,您可以定义一个属性企业模块版本,将许多依赖项使用的版本保存在一个地方。

发布过程如下:

  • 发布版本号为1.0.0的每个快照依赖项(使用maven发布插件:在这一步之后,SCM中公司模块的所有pom.xml都是1.0.1-snapshot)(请参阅本文末尾的重要备注,以方便这一步)

重要提示:拥有一个包含所有公司模块的多模块父项目是必须立即执行所有公司模块的发布。为了避免在使用maven-resess-plugin和多模块父项目时遇到太多麻烦,请务必将您的父pom.xml一个目录放在所有子pom.html" target="_blank">xml之上(这是maven设计的推荐,但不幸的是,有时eclipse用户不遵循它,因为eclipse不喜欢分层项目)

 类似资料:
  • 虽然在处理未解决的依赖项时存在许多问题,但似乎没有更新这些依赖项的通用方法。 您需要手工为每一个检查maven central,还是有一些漂亮的工具可以自动将它们更新到最新版本?

  • 我从另一个项目复制了,现在希望将所有依赖项都更新到它们的最新版本,因为这是一个新项目,如果它坏了,我不介意修复它。 最简单的方法是什么? 我知道的最好的方法是运行,然后手动更新中的每个依赖项。一定有更好的办法。 对于纱线的特定解决方案,请参阅此StackOverflow线程。

  • MVNRepository通常为每个依赖项列出“版本”和“更新”。 如果我发布自己的包,如何指定“更新”版本 Maven在解决传递依赖时使用了哪个依赖项?所以如果我的包依赖于包A,它依赖于包B,版本=1.0,更新=1.1。我会得到哪个版本的B?

  • 当我运行版本:显示依赖项更新时,它将显示我的依赖项的所有最新beta/里程碑版本。我更喜欢使用“release”包。 <代码>版本:使用最新版本谈论用最新版本“替换”。但是,我更喜欢手动更新版本。 我可以运行版本插件来报告我的依赖项和插件的最新“发布”版本吗? 我指的是mvnrepository上列出的包的“类型”。组织机构

  • 问题内容: 在Maven中,依赖关系通常是这样设置的: 现在,如果你正在使用发布频繁的库,则不断更新标记可能会有些烦人。有什么方法可以告诉始终使用最新的可用版本(来自存储库)? 问题答案: 有关更多详细信息,请参见Maven书籍的POM语法部分。或者在Dependency Version Ranges上查看此文档,其中: 方括号([&])表示“封闭”(含)。 括号((&))表示“开放”(排除)。

  • 问题内容: iText的最新版本是什么?那么,对Maven的依赖是什么? 问题答案: 您需要注意iText的Java版本的许可证: iText :iText Group NV在&许可下使用groupId; 的最新 正式 版本。 iText :ymasory / InProTopia 的最新 非官方 版本,在&许可下具有groupId; iText 及更高版本:由iText Group NV根据许可