首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven管道找不到JDK

Maven管道找不到JDK
EN

Stack Overflow用户
提问于 2019-02-23 16:48:23
回答 2查看 1.8K关注 0票数 2

我在运行一个简单的Java管道时遇到问题。所使用的maven命令因未知原因使用预期的JDK失败。

  • 刚安装的Jenkins从码头图像jenkinsci/blueocean运行:最新版本
  • 在Jenkins工具设置窗格中配置Oracle JDK 9和Maven 3.5.4

Jenkinsfile内容:

代码语言:javascript
复制
    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'
          }
        }
      }
    }

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

代码语言:javascript
复制
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工具的预期路径。

"Build“"java -version”脚本的输出

代码语言:javascript
复制
+ 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坞主机系统的Java。

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

代码语言:javascript
复制
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码头容器中,就会在前面提到的路径上找到java bin。

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

这是许可问题吗?Jenkins容器使用一个停靠卷:-v jenkins-data:/var/jenkins_home

最好的,拉尔斯

EN

回答 2

Stack Overflow用户

发布于 2019-11-08 14:51:41

不确定詹金斯管道的工具+码头工作得这么好。

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

到目前为止,我成功地使其工作的唯一方法是将docker节点的tools目录挂载到docker从目录中。

例如:

代理{ docker args '-v $HOME/tools:/var/lib/jenkins/tools‘

步骤{ sh "${MAVEN_HOME}/bin/mvn -version“

编辑:也找到了这个:https://issues.jenkins-ci.org/browse/JENKINS-48050

票数 0
EN

Stack Overflow用户

发布于 2021-09-17 12:36:42

你不需要这两个工具。用Maven工具就够了。它包括Java。你的管道应该是:

代码语言:javascript
复制
pipeline {
  agent any
  tools {
    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'
      }
    }
  }
}

您可以在Jenkins配置工具中删除Java工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54843799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档