jenkinsfile - 如何在我的pom.xml中访问自定义属性?

时间:2017-11-16 07:06:22

标签: maven jenkins groovy pom.xml

假设我的pom.xml集中有一个自定义属性,如下所示:

<properties>
 <app>com.myProject.app</app>
</properties>

如何在jenkinsfile中访问它?

此:

def pom = readMavenPom file: 'pom.xml'
def appName = pom.app

返回

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified field org.apache.maven.model.Model app

提前致谢!

3 个答案:

答案 0 :(得分:3)

我知道两种方法:

  1. 使用properties-maven-plugin将属性写入文件。在Jenkins文件中使用readProperties来读取属性。
    仅在Maven运行之后才需要属性时才有效。
    同样,在适当的情况下,属性文件可能是上一次运行的陈旧文件,这是隐晦的,因为99.9%的时间中属性值总是正确的。
  2. 使用pom = readMavenPom 'path/to/pom.xml'。然后,像这样访问属性:pom.properties['com.myProject.app']

我更喜欢方法2:POM中没有额外的插件配置,没有文件写入,排序约束更少,脆弱性更低。

答案 1 :(得分:1)

在管道样式中,您可以在Jenkinsfile中访问以下值

pipeline {

environment {
      POM_APP = readMavenPom().getProperties().getProperty('app')
}

stages{
    stage('app stage'){
        steps{
            script{
                 sh """
                 echo ${POM_APP}
                 """
            }
        }
    }
}

Read a maven project file

答案 2 :(得分:0)

试试这个: 图像 = readMavenPom().getArtifactId() VERSION = readMavenPom().getVersion()