在Jenkins管道中未设置Maven工具(Maven tool is not set in Jenkins pipeline)

编程入门 行业动态 更新时间:2024-10-22 18:50:16
在Jenkins管道中未设置Maven工具(Maven tool is not set in Jenkins pipeline)

我在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

我确实在Jenkins服务器上找到了路径/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/M3 ,但是我不想在这个脚本中使用mvn的硬编码路径。

我该如何解决?


编辑 : 答案的摘要,使用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''' } }

I have this stage in my Jenkins pipeline:

stage('Build') { def mvnHome = tool 'M3' sh '''for f in i7j-*; do (cd $f && ${mvnHome}/bin/mvn clean package) done wait''' }

In Jenkins » Manage Jenkins » Global Tool Configuration I have a Maven installation called M3, version 3.3.9.

When running this pipeline, mvnHome is empty because I get this in the log:

+ /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

I did find a path /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/M3 on the Jenkins server, which works, but I would prefer not to use a hard coded path to mvn in this script.

How do I fix this?


EDIT: Summary of the answer, using tool and withEnv.

My working code is now:

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和withEnv片段在Jenkinsfile中使用您的工具。

应该是这样的:

def mvn_version = 'M3' withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) { //sh "mvn clean package" }

You can use your Tools in Jenkinsfile with the tool and withEnv snippets.

Should looks like this:

def mvn_version = 'M3' withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) { //sh "mvn clean package" }

更多推荐

本文发布于:2023-04-27 15:27:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1327168.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管道   中未   工具   Jenkins   Maven

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!