Reputation: 4908
I am working on a Jenkinsfile for use with Jenkins 2.0. The readMavenPom
method is not recognized. Is there some configuration I am missing to make this available?
My Jenkinsfile:
node {
stage 'Checkout'
checkout scm
env.PATH = "${tool 'maven-3'}/bin:${env.PATH}"
stage 'Build'
def pom = readMavenPom file: 'pom.xml'
echo "${pom}"
sh "mvn -DskipTests=true verify"
}
When run, I get the following error:
java.lang.NoSuchMethodError: No such DSL method 'readMavenPom' found among [AWSEBDeployment, archive, bat, build, catchError, checkout, deleteDir, dir, echo, emailext, error, fileExists, git, input, isUnix, load, mail, node, parallel, properties, pwd, readFile, retry, sh, slackSend, sleep, stage, stash, step, svn, timeout, tool, unarchive, unstash, waitUntil, withCredentials, withEnv, wrap, writeFile, ws]
Upvotes: 31
Views: 29778
Reputation:
Use below command to read whole pom.xml in declarative pipeline :
sh ‘mvn -f ./path-to-my-service/pom.xml help:evaluate -Dexpression=project -q -DforceStdout’
For specific property in a pom.xml use same command with tag hierarchy :
project.property.sub-property........and so on
def pom_version = sh script: 'mvn -f ./path-to-my-service/pom.xml -DskipTests help:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true;
def pom_artifactId = sh script: 'mvn -f ./path-to-my-service/pom.xml -DskipTests help: evaluate -Dexpression=project.artifactId -q -DforceStdout', returnStdout: true;
def pom_groupId = sh script: 'mvn -f ./path-to-my-service/pom.xml -DskipTests help:evaluate -Dexpression=project.groupId -q -DforceStdout', returnStdout: true;
Upvotes: 0
Reputation: 1538
Before you use this step, note the below from writeMavenPom/readMavenPom documentation:
Avoid using this step and readMavenPom. It is better to use the sh step to run mvn goals
Upvotes: 0