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中配置

image.png image.png image.png image.png
上一篇 下一篇

猜你喜欢

热点阅读