Jenkins在升级到Java 17后找不到Maven

lnxxn5zx  于 2023-10-17  发布在  Maven
关注(0)|答案(2)|浏览(218)

我有一个Raspberry Pi,我正在运行Jenkins来编译和部署Java应用程序。我们已经迁移到Spring 3,所以现在它需要Java 17来运行。由于某些原因,不可能使用apt-get安装Java 17,所以我删除了所有以前的Java版本,并直接从tar文件安装它,因为它记录了导致:

  1. pi@raspberrypi:~ $ echo $JAVA_HOME
  2. /opt/jdk/jdk-17.0.1+12
  3. pi@raspberrypi:~ $ java -version
  4. openjdk version "17.0.1" 2021-10-19
  5. OpenJDK Runtime Environment Temurin-17.0.1+12 (build 17.0.1+12)
  6. OpenJDK Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)

我对maven也采取了同样的做法:

  1. pi@raspberrypi:~ $ echo $MAVEN_HOME
  2. /opt/maven
  3. pi@raspberrypi:~ $ echo $M2_HOME
  4. /opt/apache-maven-3.9.4
  5. pi@raspberrypi:~ $ mvn -version
  6. Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
  7. Maven home: /opt/maven
  8. Java version: 17.0.1, vendor: Eclipse Adoptium, runtime: /opt/jdk/jdk-17.0.1+12
  9. Default locale: en_GB, platform encoding: UTF-8
  10. OS name: "linux", version: "5.10.103-v7l+", arch: "arm", family: "unix"

所以我相信这两个都是为用户pi正确安装的,但是不以 * 官方 * 的方式安装它并不能自动设置所有内容。
我已经设置了一个Jenkins作业来打印所有这些用于调试目的:

  1. echo $JAVA_HOME
  2. echo $M2_HOME
  3. echo $MAVEN_HOME
  4. java -version
  5. javac -version
  6. mvn -v

它打印以控制以下内容:

  1. Started by user Master Gui
  2. Running as SYSTEM
  3. Building in workspace /var/lib/jenkins/workspace/echo
  4. [echo] $ /bin/sh -xe /tmp/jenkins3152995503405589329.sh
  5. + echo /usr/lib/jvm/default-java
  6. /usr/lib/jvm/default-java
  7. + echo
  8. + echo
  9. + java -version
  10. openjdk version "17.0.1" 2021-10-19
  11. OpenJDK Runtime Environment Temurin-17.0.1+12 (build 17.0.1+12)
  12. OpenJDK Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)
  13. + javac -version
  14. javac 17.0.1
  15. + mvn -v
  16. /tmp/jenkins3152995503405589329.sh: 7: /tmp/jenkins3152995503405589329.sh: mvn: not found
  17. Build step 'Execute shell' marked build as failure
  18. Finished: FAILURE

Java似乎可以工作,Maven不行,所有的env变量都是错误的。有人知道我错过了什么吗?
谢谢你,谢谢!

f2uvfpb9

f2uvfpb91#

最好的做法是在Jenkins文件的“工具”部分一致地定义JDK和maven,并在Jenkins配置中定义这两个工具,以便Jenkins自动下载必要的命令。
我有一个黄金法则,你永远不应该在Jenkins Master/Workers上显式安装构建包,以便将来能够过渡到其他平台(我并不是说这是好的或最佳的行业实践)。

cuxqih21

cuxqih212#

我最终将PATH设置为Jenkins环境变量,其值与Jenkins的 outside 相同。我不确定这是一个正确的方式来做它或行业标准,但这是唯一的方式,我可以让它工作。

相关问题