[英]How do I automate the update of SNAPSHOT dependencies to the latest released versions when using maven
我正在尝试为我们的项目定义发布过程。
我能够使用Maven发布插件来完成发布,但是我必须手动将所有内部SNAPSHOT依赖项更新为准备之前的发布版本,然后在发布后再次返回到SNAPSHOT版本。
我使用了maven版本插件,它检测到我的公司依赖项(即SNAPSHOT构建)并列出了要使用的正确发行版。
我尝试了maven版本插件,准备了目标,并抱怨依赖项中的SNAPSHOT版本。
有没有办法发布将SNAPSHOT依赖关系更新为最新发行版本,然后在发行后又恢复为SNAPSHOT版本的发行方式? 或者,也许这不是您应该在发行版和SNAPSHOTS中使用Maven的方式。
当您使用Maven创建一个Realease时:它必须是确定的。 即,一旦创建它就不能再更改(即,源不能更改,依赖项也不能更改)。
因此,当您创建依赖于moduleB的moduleA和moduleA的发行版时。 在释放模块A之前必须释放模块B,并且模块A必须取决于模块B的发行版本。
重要的一件事是您不应该回到SNAPSHOT版本。 至少据我理解,这意味着:
必须明确的是,一旦存在moduleB-1.0.0(即,已发布):工件模块B-1.0.0-SNAPSHOT不应再使用。
而不是返回到SNAPSHOT,应该将依赖关系更新到下一个SNAPSHOT版本 (例如moduleB-SNAPSHOT-1.0.1)。
话虽这么说,要释放依赖于许多SNAPSHOT工件的模块并非易事,因为必须先释放所有依赖关系,然后才能释放您的主要工件。
在大多数情况下,我们所拥有的是一个主要工件,这取决于具有相同版本控制策略的许多其他工件(我们称它们为公司模块)。 因此,您可以在一个地方定义一个属性corporate-module-version
,其中包含许多依赖项使用的版本。
发布过程如下:
corporate-module-version
属性更改为“ 1.0.0”(以便所有SNAPSHOT依赖项都由刚刚发布的版本替换) corporate-module-version
的修改后的pom.xml corporate-module-version
属性更改为“ 1.0.1-SNAPSHOT”(以便所有依赖项都被最新的快照版本替换) 重要说明 :必须有一个包含所有公司模块的多模块父项目,才能立即释放所有公司模块。 为了使maven-release-plugin和多模块父项目没有太多麻烦,请确保将父pom.xml放在子pom.xml的上方(这是maven的设计建议,但不幸的是,有时,eclipse用户不遵循它,因为eclipse不喜欢分层项目)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.