Maven 工具链
要使用多个 Java 版本,您需要使用Maven Toolchains,这需要您toolchains.xml
在 Maven 文件夹中创建一个文件~/.m2
,其中包含您机器上安装的所有 Java 版本:
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<id>Java13</id>
<version>13</version>
</provides>
<configuration>
<jdkHome>${env.JAVA_HOME_13}</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<id>Java9</id>
<version>9</version>
</provides>
<configuration>
<jdkHome>${env.JAVA_HOME_9}</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<id>Java8</id>
<version>8</version>
</provides>
<configuration>
<jdkHome>${env.JAVA_HOME_8}</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<id>Java7</id>
<version>7</version>
</provides>
<configuration>
<jdkHome>${env.JAVA_HOME_7}</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<id>Java6</id>
<version>6</version>
</provides>
<configuration>
<jdkHome>${env.JAVA_HOME_6}</jdkHome>
</configuration>
</toolchain>
</toolchains>
, JAVA_HOME_13
, JAVA_HOME_9
, JAVA_HOME_8
,环境变量被配置JAVA_HOME_7
为JAVA_HOME_6
引用相关 Java 版本的安装路径。
FlexyPool 父 pom.xml 配置文件
FlexyPool项目的父pom.xml
Maven 配置文件定义了全局 Java 版本设置
<properties>
<jdk.version>8</jdk.version>
...
</properties>
现在,我们需要指示编译器和测试插件都使用配置的 java 版本。
<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>${jdk.version}</version>
</jdk>
</toolchains>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
</plugins>
</build>
FlexyPool 子 Maven 模块 pom.xml 使用不同的 Java 版本
需要不同 Java 版本的flexy-pool-core-java9
子 Maven 模块只需要覆盖默认的jdk.version
Maven 属性:
<properties>
<jdk.version>9</jdk.version>
</properties>
就是这样,我们现在可以使用自己的最小可行 Java 版本构建每个模块。