首页 > 解决方案 > java:在 Jenkins 管道中运行 Ant 时找不到

问题描述

我在通过 Jenkins 管道运行 ant 时遇到问题。运行 JenkinsFile 时出现以下错误。

Started by user xxxxxx
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/xxxxxx_workspace
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] tool
[Pipeline] tool
[Pipeline] sh
[xxxxxx_workspace] Running shell script
+ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (IcedTea 3.6.0) (Alpine 8.151.12-r0)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
[Pipeline] withAnt
[Pipeline] {
[Pipeline] sh
[xxxxxx_workspace] Running shell script
+ ant -d -version
/var/jenkins_home/tools/hudson.tasks.Ant_AntInstallation/ant_1_10_5/bin/ant: exec: line 1: /var/jenkins_home/tools/hudson.model.JDK/jdk_8u181/jre/bin/java: not found
[Pipeline] }
[Pipeline] // withAnt
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

我的 JenkinsFile 如下:

node {
  stage('Test') {
    env.JAVA_HOME="${tool 'jdk_8u181'}"
    env.ANT_HOME="${tool 'ant_1_10_5'}"
    env.PATH = "${env.JAVA_HOME}/bin:${env.ANT_HOME}/bin:${env.PATH}"
    sh "java -version"
    withAnt(installation: 'ant_1_10_5', jdk: 'jdk_8u181') {
    //  echo "Test ant"
      sh "ant -d -version"
    }
  }
}

我在 Jenkins 全局工具配置中设置了 Java 和 Ant

JDK 设置截图 https://i.stack.imgur.com/DdMRv.png

Ant 设置截图 https://i.stack.imgur.com/WQr7v.png

JDK 和 Ant 的文件路径可以确认是否可用。请注意,我使用的是 docker,因此 /var/jenkins_home 已安装到 /opt/jenkins 但您可以在控制台输出中看到 'sh "java -version"' 仍然有效

[root@jenkins jre]# ls -al /opt/jenkins/tools/hudson.model.JDK/jdk_8u181/jre/bin/java
-rwxr-xr-x 1 centos centos 7734 Jul  7 16:06 /opt/jenkins/tools/hudson.model.JDK/jdk_8u181/jre/bin/java
[root@jenkins jre]# ls -al /opt/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1_10_5/bin/ant
-rwxr-xr-x 1 centos centos 11638 Jul 19 10:54 /opt/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1_10_5/bin/ant
[root@jenkins jre]#

标签: javajenkinsantjenkins-pipeline

解决方案


注意

[xxxxxx_workspace] Running shell script
+ java -version
openjdk version "1.8.0_151"
                       ^^^

line 1: /var/jenkins_home/tools/hudson.model.JDK/jdk_8u181/jre/bin/java: not found
                                                       ^^^

当您运行时,java -version您将获得 PATH 中的任何内容。在您的实际编译中,您试图在不同的特定路径上执行 java。根据错误消息,路径很可能不存在。


推荐阅读