writeMavenPom不是用pom

时间:2017-10-23 06:50:19

标签: maven pom.xml jenkins-pipeline

根据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

4 个答案:

答案 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)

我建议您使用maven versions plugin

Ypu可以使用以下命令删除-SNAPSHOT:

mvn versions:set -DremoveSnapshot

答案 3 :(得分:0)

我必须添加以下指令来保存数据:

pom.version = pom.version.replace("-SNAPSHOT", "")

虽然有更好的选择