我有一个Raspberry Pi,我正在运行Jenkins来编译和部署Java应用程序。我们已经迁移到Spring 3,所以现在它需要Java 17来运行。由于某些原因,不可能使用apt-get安装Java 17,所以我删除了所有以前的Java版本,并直接从tar文件安装它,因为它记录了导致:
pi@raspberrypi:~ $ echo $JAVA_HOME
/opt/jdk/jdk-17.0.1+12
pi@raspberrypi:~ $ java -version
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment Temurin-17.0.1+12 (build 17.0.1+12)
OpenJDK Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)
我对maven也采取了同样的做法:
pi@raspberrypi:~ $ echo $MAVEN_HOME
/opt/maven
pi@raspberrypi:~ $ echo $M2_HOME
/opt/apache-maven-3.9.4
pi@raspberrypi:~ $ mvn -version
Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
Maven home: /opt/maven
Java version: 17.0.1, vendor: Eclipse Adoptium, runtime: /opt/jdk/jdk-17.0.1+12
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "5.10.103-v7l+", arch: "arm", family: "unix"
所以我相信这两个都是为用户pi正确安装的,但是不以 * 官方 * 的方式安装它并不能自动设置所有内容。
我已经设置了一个Jenkins作业来打印所有这些用于调试目的:
echo $JAVA_HOME
echo $M2_HOME
echo $MAVEN_HOME
java -version
javac -version
mvn -v
它打印以控制以下内容:
Started by user Master Gui
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/echo
[echo] $ /bin/sh -xe /tmp/jenkins3152995503405589329.sh
+ echo /usr/lib/jvm/default-java
/usr/lib/jvm/default-java
+ echo
+ echo
+ java -version
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment Temurin-17.0.1+12 (build 17.0.1+12)
OpenJDK Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)
+ javac -version
javac 17.0.1
+ mvn -v
/tmp/jenkins3152995503405589329.sh: 7: /tmp/jenkins3152995503405589329.sh: mvn: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Java似乎可以工作,Maven不行,所有的env变量都是错误的。有人知道我错过了什么吗?
谢谢你,谢谢!
2条答案
按热度按时间f2uvfpb91#
最好的做法是在Jenkins文件的“工具”部分一致地定义JDK和maven,并在Jenkins配置中定义这两个工具,以便Jenkins自动下载必要的命令。
我有一个黄金法则,你永远不应该在Jenkins Master/Workers上显式安装构建包,以便将来能够过渡到其他平台(我并不是说这是好的或最佳的行业实践)。
cuxqih212#
我最终将PATH设置为Jenkins环境变量,其值与Jenkins的 outside 相同。我不确定这是一个正确的方式来做它或行业标准,但这是唯一的方式,我可以让它工作。