我有一个Maven pom.xml,我用Jenkins构建项目和发布项目部署。
但在构建“发布版本”之前和之后,我们需要在
中设置我的版本例如: 我在pom.xml
<properties>
<version-own>0.0.21-SNAPSHOT</version-own>
</properties>
在发布之前我需要像这样设置
<properties>
<version-own>0.0.25</version-own>
</properties>
发布后我需要像这样设置
<properties>
<version-own>0.0.27-SNAPSHOT</version-own>
</properties>
如何做到这一点?
答案 0 :(得分:27)
如果您不必使用自己的版本属性,请考虑以下对<project><version>0.0.21-SNAPSHOT</version></project>
元素进行操作的内容:
mvn versions:set versions:commit -DnewVersion="0.0.25"
这将修改您的pom并根据您的喜好调整版本。您可能希望将此更改提交到源代码控制存储库,因为scm插件的scm:checkin目标工作得很好(假设您希望自动化):
mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release."
然后您可以执行发布(我推荐maven-release-plugin),之后您可以设置新版本并按上述方式提交。
versions plugin是你的朋友。编写上述内容可能涉及一些参数化构建,或者最好是jenkins的groovy插件,它允许您获取特定于maven的构建变量。
答案 1 :(得分:7)
有一种方法可以轻松实现。使用一个命令,您可以更改您想要的任何部分:
剪切和粘贴:
mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}'
为清楚起见:
mvn build-helper:parse-version versions:set -DbuildNumber=555
'-DnewVersion=
${parsedVersion.majorVersion}
.${parsedVersion.minorVersion}
.${parsedVersion.incrementalVersion}
-${buildNumber}'
这是一个简洁的示例,说明如何使用构建值一次更新版本
答案 2 :(得分:6)
首先,您可以手动完成。如果您的构建遵循maven约定,您可以利用现有的几个maven插件中的一个来帮助管理版本号。
maven-versions-plugin有助于自动手动更改版本号。它有很好的CLI命令来帮助你在发布之前调整你的poms。
然后有maven-release-plugin自动完成切割版本的整个过程。它会将您的快照更改为发布版本,然后在发布版本之后将其滚动到下一个快照。在这一过程中,它将poms的离散版本提交给源代码控制。
同样,在maven社区更自动化的部分看到成功的秘诀在于你的构建是否以maven的方式做事。黑客,高度调整,非传统的构建通常对成功使用发布插件有很多障碍。
答案 3 :(得分:2)
Build-helper插件支持正则表达式替换,甚至可以根据需要解析版本号。 http://www.mojohaus.org/build-helper-maven-plugin/
答案 4 :(得分:1)
有类似parsedVersion.nextIncrementalVersion
mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit
答案 5 :(得分:0)
查看此comment,您说明您正在使用此版本来提供依赖项。 maven-release-plugin应该可以帮助您管理版本。所以在你的pom.xml中提供该插件。
对于手动提供发布和开发版本的步骤,在jenkins中创建一个具有2个字符串参数的作业:
developmentVersion
releaseVersion
添加“调用顶级Maven目标”构建步骤以执行释放(例如):
clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion}
构建作业时,它会提示您插入developmentVersion和releaseVersion。
干杯,
霸