根据https://www.cloudbees.com/blog/new-way-do-continuous-delivery-maven-and-jenkins-pipeline如何用pom.version.replace写一个pom看起来像?我假设pom.version.replace不会修改任何内容,但如何将更改保存在pom中? 我目前正在使用这个更新失败:
def pom = readMavenPom file: 'pom.xml'
def version = pom.version.replace("-SNAPSHOT", "")
writeMavenPom model: pom
答案 0 :(得分:2)
您需要更改pom对象。 replace
方法不会修改字符串,但会返回一个新字符串。由于您已经存储了已更改的版本,因此只需覆盖pom.version
即可。 readMavenPom
返回的对象为Model。此类有一个setVersion
方法,可以在将具有writeMavenPom
的对象写入文件之前更改版本。
所以看起来应该是这样的:
def pom = readMavenPom file: 'pom.xml'
def version = pom.version.replace("-SNAPSHOT", "")
pom.version = version
writeMavenPom model: pom
答案 1 :(得分:1)
从我刚刚粘贴的链接中获得灵感,作为对另一个答案的评论,你也可以看看新的Maven功能,以便持续交付。也就是说,您现在可以使用属性(从Maven 3.2.1开始)作为版本:
<version>${releaseVersion}</version>
...
<properties>
<releaseVersion>0-SNAPSHOT</releaseVersion> <!-- sane default -->
</properties>
因此,您可以在构建期间将所需版本作为-D
参数传递:
mvn clean package -DreleaseVersion=1.2.3-45
请参阅此处以获取详细讨论:https://axelfontaine.com/blog/dead-burried.html
答案 2 :(得分:1)
答案 3 :(得分:0)
我必须添加以下指令来保存数据:
pom.version = pom.version.replace("-SNAPSHOT", "")
虽然有更好的选择