我的 Jenkins 管道中有这个阶段:
stage('Build') {
def mvnHome = tool 'M3'
sh '''for f in i7j-*; do
(cd $f && ${mvnHome}/bin/mvn clean package)
done
wait'''
}
在 Jenkins » 管理 Jenkins » 全局工具配置中我有一个名为
M3
的 Maven 安装, 版本 3.3.9
.运行此管道时,
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
我确实找到了路径
/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/M3
在 Jenkins 服务器上运行,但我不希望在此脚本中使用硬编码的 mvn 路径。我该如何解决?
编辑 : 总结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'''
}
}
最佳答案
您可以通过 tool
在 Jenkinsfile 中使用您的工具和 withEnv
片段。
应该是这样的:
def mvn_version = 'M3'
withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) {
//sh "mvn clean package"
}
关于Jenkins 管道中未设置 Maven 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691946/