JAVA_HOME 中的 Java 9
$ export JAVA_HOME=/path/to/jdk9 $ mvn test
使用 JDK 已弃用的模块
从 Java 9 开始,一些以前与 JDK 捆绑在一起的模块默认被禁用。
该插件的 2.20.1 版本自动向分叉 JVM 的命令行添加了“–add-modules java.se.ee”选项(除非用户已经指定),以简化应用程序向 Java 9 的过渡。
从 2.21 开始,插件将不再添加该选项:使用这些模块的推荐方法是添加此类库的维护版本的显式依赖项。
这是与 Java 8 捆绑在一起的版本的参考:
公地注释
javax.annotation:javax.annotation-api:1.3.1
JavaBeans 激活框架
javax.activation:javax.activation-api:1.2.0
Java 事务 API
javax.transaction:javax.transaction-api:1.2
JAXB
javax.xml.bind:jaxb-api:2.3.0
org.glassfish.jaxb:jaxb-runtime:2.3.0(实现)
JAX-WS
javax.xml.ws:jaxws-api:2.3.0
com.sun.xml.ws:jaxws-rt:2.3.0(实现)
其中每一个的源代码都保存在https://github.com/javaee
在插件配置中通过 Toolchains API 选择 JDK
<configuration>
[...]
<jdkToolchain>
<version>11</version>
<vendor>sun</vendor>
</jdkToolchain>
[...]
</configuration>
上面的示例假定您的toolchains.xml包含具有这些值的有效条目。
<toolchains xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 https://maven.apache.org/xsd/toolchains-1.1.0.xsd">
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>sun</vendor>
<id>jdk8</id>
</provides>
<configuration>
<jdkHome>/path/to/openjdk8</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>11</version>
<vendor>sun</vendor>
<id>jdk11</id>
</provides>
<configuration>
<jdkHome>/path/to/openjdk/11</jdkHome>
</configuration>
</toolchain>
</toolchains>
插件配置中的 Java 9
该插件为您提供了配置参数jvm,可以指向JDK中可执行Java的路径,例如:
<configuration>
<jvm>/path/to/jdk9/bin/java</jvm>
</configuration>
现在您可以在 Java 9 之上运行带有测试的构建。
这是非常不推荐的配置,因为该解决方案直接使用 JDK 指定路径,因此无法顺利转移到其他构建系统。
带有 JDK 9 的 Maven 工具链
从3.0.0-M5版本开始,您可以使用标准方式在插件执行过程中切换 JDK。有关更多信息,请参阅“在插件配置中通过工具链 API 选择 JDK”一章。
插件maven-toolchains-plugin应该与旧版本的 Surefire 或 Failsafe 插件一起使用。在此示例中,您可以看到如何在整个构建中(在 Windows 上)通过 Toolchain (-t ...)切换 JDK。
$ mvn -t D:\.m2\toolchains.xml test
如果没有(-t ...),工具链应该位于${user.home}/.m2/toolchains.xml中。
toolchains.xml的内容如下,但是可以指定多个不同的 JDK。
<toolchains xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 https://maven.apache.org/xsd/toolchains-1.1.0.xsd">
<toolchain>
<type>jdk</type>
<provides>
<version>9</version>
<vendor>oracle</vendor>
<id>jdk9</id>
</provides>
<configuration>
<jdkHome>/path/to/jdk9</jdkHome>
</configuration>
</toolchain>
</toolchains>
您的 POM 应指定仅激活toolchains.xml中指定版本9的特定 JDK 的插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>9</version>
</jdk>
</toolchains>
</configuration>
</plugin>
现在您可以在 Java 9 之上运行带有测试的构建。
另请参阅surefire 工具链配置选项的完整文档。



