Maven管道无法找到JDK

时间:2019-02-23 16:48:23

标签: jenkins jenkins-pipeline

我在运行简单的Java Maven管道时遇到问题。由于未知原因,使用的maven命令无法使用预期的JDK失败。

  • 从docker映像jenkinsci / blueocean:latest运行的新安装的Jenkins
  • 在Jenkins工具设置窗格中配置了Oracle JDK 9和Maven 3.5.4

Jenkins文件内容:

    pipeline {
      agent any
      tools {
        jdk 'java9'
        maven 'Maven3.5'
      }
      stages {
        stage ('Initialize') {
          steps {
            sh '''
              echo "PATH = ${PATH}"
              echo "M2_HOME = ${M2_HOME}"
              echo "JAVA_HOME = ${JAVA_HOME}"
            '''
          }
        }
        stage ('Build') {
          steps {
            sh 'java -version'
            sh 'mvn --version'
          }
        }
      }
    }

“初始化”阶段脚本的输出

PATH = /var/jenkins_home/tools/hudson.model.JDK/java9/bin:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.5/bin:/var/jenkins_home/tools/hudson.model.JDK/java9/bin:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin

M2_HOME = /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.5

JAVA_HOME = /var/jenkins_home/tools/hudson.model.JDK/java9

这对我来说看起来很有效。 M2_HOME和JAVA_HOME指向Jenkins工具的预期路径。

“构建”“ java -version”脚本的输出

+ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (IcedTea 3.10.0) (Alpine 8.191.12-r0)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

这似乎是Jenkins docker主机系统的已安装Java

“ Build”“ mvn -version”脚本的失败输出:

mvn --version
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.5/bin/mvn: exec: line 191: /var/jenkins_home/tools/hudson.model.JDK/java9/bin/java: not found
script returned exit code 127

如果我猛扑到Jenkins docker容器中,则会在上述路径中找到java bin。

我的错误在哪里? Maven为什么找不到Java?

这是权限问题吗? Jenkins docker容器使用docker卷: -v jenkins-data:/var/jenkins_home

最好, 拉斯

1 个答案:

答案 0 :(得分:0)

不确定Jenkins Pipeline中的工具+ docker是否运行良好。

请参阅:https://issues.jenkins-ci.org/browse/JENKINS-36159

到目前为止,只有设法将docker节点的tools目录安装到docker slave中,我才能设法使它生效。

例如

agent {码头工人 args'-v $ HOME / tools:/ var / lib / jenkins / tools'

阶段{步骤{ sh“ $ {MAVEN_HOME} / bin / mvn -version”

编辑:也刚刚发现:https://issues.jenkins-ci.org/browse/JENKINS-48050