我现有的项目使用 Java 1.8 我的 JAVA_HOME 设置为 Java 1.8 结果 maven 使用的是 Java 1.8 ,这很好 现在我们的项目决定开始使用在 Java 11 上运行的 SonarQube 9.x 除了对我们的代码运行任何扫描/分析之外 - 它还需要 Java 11
所以这就是我需要做的:
#1 使用默认jdk(1.8)编译代码(mvn clean install)
#2 使用 jdk 11 运行声纳扫描 ( mvn sonar:sonar )
执行#2需要maven使用jdk 11,而执行#1需要maven使用jdk 1.8。
在阅读了有关SO的各种问题后,遇到了“工具链”
因此将 toolchains.xml 添加到我的“m2”文件夹中:
<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<!-- JDK toolchains -->
<toolchain>
<type>jdk</type>
<provides>
<version>1.11</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>C:\construction\tools\jdk-11.0.12</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>C:\Program Files\Java\jdk1.8.0_191</jdkHome>
</configuration>
</toolchain>
在我的项目 pom.xml 中添加了工具链插件
<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>1.11</version>
<vendor>sun</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
现在,当我运行 maven clean install 时,可以在日志中看到 java 11“似乎”已被使用:
[信息] --- maven-toolchains-plugin:1.1:toolchain (默认) @ TreeSurveyAPI ---
[INFO] 所需工具链:jdk [vendor='sun' version='1.11'] [INFO] 找到类型 jdk 的匹配工具链:JDK[C