jenkins任务中使用maven打包出错

问题遇到的现象和发生背景

我在做一个jenkins项目实现CI/CD的实验,没想到在CI的时候就出现了问题,在构建项目时发现代码能够正常在git拉取下来,但是maven打包却失败了。

遇到的现象和发生背景

我做实验的系统以及工具的版本如下:

CentOS - 7.8
Jenkins - 2.387.3
Docker - 24.0.1
Java - 1.8.0_371
Maven - 3.9.2
运行结果及详细报错内容
Started by user Jelly
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/mytest
The recommended git tool is: NONE
No credentials specified
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/mytest/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://192.168.254.241:8929/root/mytest.git # timeout=10
Fetching upstream changes from http://192.168.254.241:8929/root/mytest.git
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
 > git fetch --tags --force --progress -- http://192.168.254.241:8929/root/mytest.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 8e0982fd1826742f187b57d54ec661d89815404d (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 8e0982fd1826742f187b57d54ec661d89815404d # timeout=10
Commit message: "second commit, modify port"
 > git rev-list --no-walk 8e0982fd1826742f187b57d54ec661d89815404d # timeout=10
[mytest] $ /bin/sh -xe /tmp/jenkins14998792116264341896.sh
+ echo 开始构建 Maven
开始构建 Maven
[mytest] $ /var/jenkins_home/maven/bin/mvn clean package -DskipTests
/var/jenkins_home/maven/bin/mvn: 195: exec: /var/jenkins_home/jdk/bin/java: not found
Build step 'Invoke top-level Maven targets' marked build as failure
Finished: FAILURE
我的解答思路和尝试过的方法

我尝试进入docker容器内,发现在容器里手敲命令是可以使用mvn将java代码打包的

jenkins@d89f6cc67dec:~/jdk8$ cd ~/workspace/mytest/
jenkins@d89f6cc67dec:~/workspace/mytest$ /var/jenkins_home/maven/bin/mvn clean package -DskipTests
[INFO] Scanning for projects...
[INFO] 
[INFO] -------------------------< com.kayuet:mytest >--------------------------
[INFO] Building mytest 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- clean:3.2.0:clean (default-clean) @ mytest ---
[INFO] 
[INFO] --- resources:3.3.0:resources (default-resources) @ mytest ---
[INFO] Copying 2 resources
[INFO] 
[INFO] --- compiler:3.8.1:compile (default-compile) @ mytest ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files to /var/jenkins_home/workspace/mytest/target/classes
[INFO] 
[INFO] --- resources:3.3.0:testResources (default-testResources) @ mytest ---
[INFO] skip non existing resourceDirectory /var/jenkins_home/workspace/mytest/src/test/resources
[INFO] 
[INFO] --- compiler:3.8.1:testCompile (default-testCompile) @ mytest ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /var/jenkins_home/workspace/mytest/target/test-classes
[INFO] 
[INFO] --- surefire:3.0.0:test (default-test) @ mytest ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- jar:3.3.0:jar (default-jar) @ mytest ---
[INFO] Building jar: /var/jenkins_home/workspace/mytest/target/mytest-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot:2.6.13:repackage (repackage) @ mytest ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11.598 s
[INFO] Finished at: 2023-06-28T08:26:25Z
[INFO] ------------------------------------------------------------------------
[WARNING] 
[WARNING] Plugin validation issues were detected in 2 plugin(s)
[WARNING] 
[WARNING]  * org.apache.maven.plugins:maven-compiler-plugin:3.8.1
[WARNING]  * org.apache.maven.plugins:maven-resources-plugin:3.3.0
[WARNING] 
[WARNING] For more or less details, use 'maven.plugin.validation' property with one of the values (case insensitive): [BRIEF, DEFAULT, VERBOSE]
[WARNING] 

一开始我看到报错信息是 not found,以为是Jenkins环境变量设置有误的问题,但是检查了一遍发现并没有填写错误。然后我以为是项目的Build Steps有问题,在自定义了一个简单的输出 “echo ‘开始构建Maven’” 发现也能够正常输出该信息。
我在搜索该问题的时候,发现一个贴子是关于 “docker容器 ~ 195: exec: ~” 错误的解决方法,他发现问题原因是dos字符与unix字符的问题,但是我是在jenkins的web页面操作的,应该不关字符的事情。
目前确实没有找到解决方法,请各位指点。

你应该查看一下宿主机有没有安装jdk

这个错误通常表示Jenkins无法找到Java可执行文件,可能是因为您的Java安装路径不正确或者没有设置正确的环境变量。

解决方法:设置java命令的环境变量
1.先找到你的java安装路径:which java,假设在【/usr/local/jdk1.8.0/bin/java】
2.永久配置:vim /etc/profile(追加)
PATH=$PATH:/usr/local/jdk1.8.0/bin
3.生效配置:source /etc/profile
4.注意:若Jenkins是容器,则必须每次打包之前执行一遍环境变量:【export PATH=$PATH:/usr/local/jdk1.8.0/bin】
或如下图内的方式:

img