强制maven使用不同的java版本

问题描述 投票:0回答:0

我现有的项目使用 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

java maven sonarqube maven-toolchains-plugin
© www.soinside.com 2019 - 2024. All rights reserved.