writeMavenPom 不是在 pom 中写入
writeMavenPom is not writing in pom
根据 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
我必须添加以下指令来保存数据:
pom.version = pom.version.replace("-SNAPSHOT", "")
尽管有更好的选择
您需要更改 pom 对象。 replace
方法不会修改字符串,而是 return 一个新字符串。由于您已经存储了更改后的版本,因此您只需覆盖 pom.version
。由 readMavenPom
编辑的对象 return 是一个 Model。此 class 有一个 setVersion
方法,可用于在将带有 writeMavenPom
的对象写入文件之前更改版本。
所以它应该是这样的:
def pom = readMavenPom file: 'pom.xml'
def version = pom.version.replace("-SNAPSHOT", "")
pom.version = version
writeMavenPom model: pom
受到 link 的启发,我刚刚粘贴为对另一个答案的评论,您也可以研究一下用于持续交付的新 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
我推荐你使用maven versions plugin。
您可以使用此命令删除 -SNAPSHOT:
mvn versions:set -DremoveSnapshot
根据 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
我必须添加以下指令来保存数据:
pom.version = pom.version.replace("-SNAPSHOT", "")
尽管有更好的选择
您需要更改 pom 对象。 replace
方法不会修改字符串,而是 return 一个新字符串。由于您已经存储了更改后的版本,因此您只需覆盖 pom.version
。由 readMavenPom
编辑的对象 return 是一个 Model。此 class 有一个 setVersion
方法,可用于在将带有 writeMavenPom
的对象写入文件之前更改版本。
所以它应该是这样的:
def pom = readMavenPom file: 'pom.xml'
def version = pom.version.replace("-SNAPSHOT", "")
pom.version = version
writeMavenPom model: pom
受到 link 的启发,我刚刚粘贴为对另一个答案的评论,您也可以研究一下用于持续交付的新 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
我推荐你使用maven versions plugin。
您可以使用此命令删除 -SNAPSHOT:
mvn versions:set -DremoveSnapshot