我有这个阶段在我的詹金斯准备:
stage('Build') {
def mvnHome = tool 'M3'
sh '''for f in i7j-*; do
(cd $f && ${mvnHome}/bin/mvn clean package)
done
wait'''
}在Jenkins中,管理Jenkins全球工具配置,我有一个名为M3,version 3.3.9的Maven安装。

当运行这个管道时,mvnHome是空的,因为我在日志中得到了这个:
+ /bin/mvn clean install -Dmaven.test.skip=true
/var/lib/jenkins/jobs/***SNIP***/script.sh: 3: /var/lib/jenkins/jobs/***SNIP***/script.sh: /bin/mvn: not found我确实在Jenkins服务器上找到了一个路径/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/M3,它可以工作,但是我不希望在这个脚本中使用硬编码的路径。
我该怎么解决这个问题?
编辑:answer的摘要,使用tool和withEnv。
我现在的工作代码是:
stage('Build') {
def mvn_version = 'M3'
withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) {
sh '''for f in i7j-*; do
(cd $f && mvn clean package -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none | tee ../jel-mvn-$f.log) &
done
wait'''
}
}发布于 2017-03-09 09:54:37
如何使用构造:
withMaven(mavenOpts: MAVEN_OPTS, maven: 'M3', mavenLocalRepo: MAVEN_LOCAL_REPOSITORY, mavenSettingsConfig: MAVEN_SETTINGS) {
sh "mvn ..."
}https://stackoverflow.com/questions/42691946
复制相似问题