jenkins使用maven toolchains插件
2024-02-23 本文已影响0人
追风还是少年
jenkins部署需要依赖JDK,jenkins新版本已经不支持jdk8,由于jekins需要部署的java应用需要运行在jdk8上,因此考虑部署可以运行在jdk8上的低版本的jenkins,但是低版本的jenkins很多插件安装都会限制jenkins的最低版本,导致低版本的jenkins很多插件都装不了。
换个思路,jenkins还是部署高版本的,服务器上安装jdk11,由于jenkins部署的java应用只能用jdk8编译和部署,因此在该服务器上也同时解压jdk8压缩文件,这样服务器同时有两个jdk,运行java -version,输出的是jdk11版本,因此默认生效的是jdk11版本;在jenkins 通过maven构建java应用时,需要能使用jdk8,在maven/bin/mvn脚本,设置export JAVA_HOME=/home/jdk8之后,发现jenkins构建java应用时,执行mvn -v命令打印的是jdk8版本,但是编译java应用的日志还是使用的jdk11,说明在maven/bin/mvn脚本设置java环境变量做法,在jenkins使用maven构建时没有生效。
查找资料发现maven支持通过toolchain插件指定java_home指定使用哪个目录的jdk,即需要再{user.home}/.m2/目录下新建toolchains.xml文件
<toolchains>
<!-- JDK toolchains -->
<toolchain>
<type>jdk</type>
<provides>
<version>8</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<jdkHome>C:\Program Files (x86)\Java\jdk-1.8</jdkHome>
</configuration>
</toolchain>
</toolchains>
之后还需要在java应用的pom.xml文件,设置maven构建插件为maven-toolchains-plugin
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>8</version>
<vendor>oracle</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
</plugins>
</build>
使用maven的toolchain插件之后的缺点时,团队协作开发项目,每个人都需要在本地的{user.home}/.m2/目录的toolchain文件中配置jdk版本
jenkins中配置
- 安装Config File Provider插件
- 配置toolchains