Jenkins 管道中未设置 Maven 工具

标签 maven jenkins 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 .

Global Tool Configuration » Maven Installations

运行此管道时,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 , 使用 toolwithEnv .

我的工作代码现在是:
   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/

相关文章:

java - IntelliJ : scala: javac: invalid source release: 1. 7

java - 如何从 pom 中删除重复的依赖项?

jenkins - 从 Jenkinsfile 中的 xml 文件获取属性值

node.js - NPM Frontend Proxy 已设置,但无法下载 NPM 包

Jenkins - 如何暂停排队作业的运行并让新构建优先

Jenkins 管道 - 无法在空对象上调用方法阶段()

java - Maven/Spring 私有(private)存储库设置

eclipse - 如何在 eclipse 中的 tomcat 上部署 Maven 项目严重 : A child container failed during start java. util.concurrent.ExecutionException

jenkins - 从机上的 Jenkins 工作空间路径不一致

groovy - 加载 groovy 文件时捕获异常