我正在尝试为我们的项目定义一个发布过程。
我能够使用maven发布插件来完成发布,但我必须手动更新所有内部SNAPSHOT依赖项以在发布之前发布版本,然后在发布后再次返回SNAPSHOT版本。
我使用了maven版本插件,它检测到我的公司依赖项是SNAPSHOT构建并列出了要使用的正确版本构建。
我尝试了maven发布插件,准备目标,并在我的依赖项中抱怨SNAPSHOT版本。
有没有办法做一个更新SNAPSHOT依赖关系到最新发布的版本然后在发布后回到SNAPSHOT版本的版本?或者这可能不是你应该使用maven与发行版和SNAPSHOTS的方式。
答案 0 :(得分:1)
使用maven创建realease时:它必须是明确的。即一旦创建它就不能再改变(即源不能改变,依赖不能改变)。
因此,当您创建moduleA和moduleA的发行版时,它依赖于moduleB。必须在moduleA发布之前释放moduleB,而moduleA必须依赖于moduleB的发布版本。
一件重要的事情是你不应该回到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
corporate-module-version
属性更改为“1.0.1-SNAPSHOT”(以便所有依赖项都替换为最新的快照版本)重要说明:拥有一个包含所有公司模块的多模块父项目是必须立即执行所有公司模块的发布。为了避免在maven-release-plugin和多模块父项目中遇到太多问题,请确保将您的父pom.xml放在一个目录上面,所有子项都是pom.xml(这是maven设计的推荐,但不幸的是,有时候,eclipse用户不遵循它,因为eclipse不喜欢分层项目)