我已经配置了一个Jenkins作业来自动发布我的Maven项目。这是通过使用以下方法完成的:mvn --batch-mode clean release:prepare release:perform
在批处理模式下,发布版本和开发版本将自动确定。这正是我想要的
问题是我想增加版本的第2个数字,而不是第3个。所以当我发布版本1时。2.0,下一个开发版本必须是1。3.0-SNAPSHOT.非1.2.1-SNAPSHOT。添加命令行参数不是一个选项,因为这迫使我不断地编辑构建作业。
关于如何更改用于确定下一个开发版本的算法有什么建议?
8条答案
按热度按时间gc0ot86w1#
我知道这是一个有点旧的职位,但我没有找到一个答案,我真的很喜欢在网上任何地方,我能够想出一些东西,可能会为他人工作。..
我想增加minorVersion作为OP的状态,我能够通过在我的项目POM中使用build helper插件(解析版本)和release插件的组合来做到这一点。请注意POM和maven run属性中引用的“初始化”阶段。..
下面是POM的摘录,我们使用构建助手插件来解析我们可以在发布插件中引用的版本。..
现在我们可以运行一个非常普通的版本,但是添加了“初始化”阶段来触发版本解析(并确保它发生在查找解析版本之前)。..
gkl3eglg2#
可以使用
build-helper-maven-plugin
。只需添加以下内容到pom。联系我们并将命令更改为
(请注意,根据您运行此命令的环境,您可能需要使用
\
转义$
:\$
)9vw9lbht3#
在
release:prepare
mojo中提供了一个参数projectVersionPolicyId
: www.example.com可能没有内置的版本策略来满足您的需求,但是您可以通过实现接口VersionPolicy来开发自己的版本策略。您可以看到maven-release-yearly-policy作为参考,它提供了在版本号中使用年份的版本策略。
8iwquhpp4#
如果您在Jenkins中使用参数化构建,则可以使用命令行参数而无需编辑作业。在作业配置页中选中“此生成已参数化”选项。
这不会让Jenkins完全独立地执行发布(这很好;我们不想让机器人抢走我们的工作!)--当你在Jenkins中手动启动一个构建时,你可以设置你配置的任何参数。
06odsfpq5#
您可以使用自定义groovy脚本自动为maven-release-plugin提供releaseVersion和developmentVersion。然后maven命令看起来有点像:
mvn clean release:clean release:prepare release:perform -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}
按照这个答案中的步骤,修改groovy脚本的一部分,以适应您的用例(例如这一部分):
up9lanfz6#
我遇到了同样的问题,我想在不运行多个命令或手动插入版本的情况下解决它。
以下是我对y(或较小)增量的解决方案:
我在initialize阶段运行Groovy脚本。此脚本创建release。属性。将此添加到您的pom中的project/build/plugins部分。xml:
此脚本还会更改vX的标签名称。Y.Z在SCM中。* * release:prepare阶段不执行initialize**阶段。要解决此问题,您可以在发布之前运行“mvn install”,或者将发布命令更改为:
关于 www.example.com :https://maven.apache.org/maven-release/maven-release-plugin/examples/non-interactive-release.html
00jrzges7#
将
pom.xml
中的maven-release-plugin
中的VersionPolicy更改为pom.xml
中的maven-release-plugin
-将参数projectVersionPolicyId
设置为**SemVerVersionPolicy
**-选择“SemVer格式并在解析开发版本时增加次要元素”而不是补丁部分(默认值)-增加第二版本部分,而不是第三版本部分。参见
pom.xml
示例片段:备注:
SemVerVersionPolicy
值仅在较新的maven-release-plugin
版本中可用。我在使用maven-release-plugin:2.5.3
时遇到了这个版本策略的问题,但在升级到3.0.0
版本后,它对我来说工作正常。参考文献:
0kjbasz68#
正如Khmarbaise所建议的,我也认为,有没有解决你的问题.
有没有什么规则,可以自动告诉你,如果你必须改变第二个或第三个数字?的确,我不这么认为。也就是说,你不能让Maven / Jenkins为你选择它,一次是主版本号,另一次是次版本号。
您必须通过参数更改它,或者让用户通过Jenkins M2 Release插件配置它,如willome所建议的那样。只能是手动操作。