大家好,欢迎来到IT知识分享网。
原文地址:http://tutorials.jenkov.com/maven/java-compiler.html
Maven 使用的默认 Java 编译器版本是 JDK5 。为什么这仍然是默认的 Java 编译器版本是一个很好的问题,因为 JDK5 于 2004 年发布。要使 Maven 使用更新版本的 Java 编译器编译您的 Java 代码,您需要在项目的 POM 中明确指定 Java 编译器文件 ( pom.xml)。
具体如何指定 Java 编译器版本取决于您使用的是 JDK8 或更早版本,还是 JDK9 或更高版本。从 JDK9 开始,Java 获得了模块,这在短期内使编译有些复杂,但从长远来看应该会有所帮助。
适用于 Java 8 及更早版本的 Maven Java 编译器
从 Java 8 及更早版本开始,有两种方法可以在 Maven POM 文件中设置 Java 编译器版本:
- 通过 Maven Java 编译器属性。
- 通过 Maven Java 编译器plugin。
在 Maven 中设置 Java 编译器版本的这两种方法将在以下部分中解释。
Maven Java 编译器属性
在 Maven POM 文件中设置 Java 编译器版本的第一个、最新且最简单的方法是通过 Maven Java 编译器属性。以下是 Maven Java 编译器属性的外观:
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
这些属性必须包含在propertiesPOM 文件的元素中。
Maven Java 编译器插件
在您的 Maven POM 文件中设置 Java 编译器版本的第二个、最古老且更详细的方法是通过 Maven Java 编译器插件。以下是 Maven Java 编译器插件的配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
带有 Java 编译器版本的 Maven POM 文件
为方便起见,这里有一个完整的 Maven POM 文件,其中包含使用上述两种机制设置的 Java 编译器版本。在您的 POM 文件中只能使用其中一种机制。该示例仅显示了这两个示例,因此您可以查看它们在 POM 文件中的放置位置。
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.x4pass</groupId>
<artifactId>maven-test</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
适用于 Java 9 及更高版本的 Maven Java 编译器
对于 JDK9 及更高版本,您需要使用 Java 编译器插件的轻微变体。您需要使用release属性而不是source和target属性。这是 Maven Java 编译器插件如何使用release属性代替的示例:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
此示例将 Java 版本设置为 11 – 在release属性内。在撰写本文时,Java 11 是 Java 的最新长期支持 (LTS) 版本。
另请注意,Maven Java 编译器插件的版本已从 3.6.1 更改为 3.8.0 。
请记住,当您升级到 JDK9+ 时,您很可能会遇到更多问题,例如确保您的 Java 项目使用的所有 Maven 插件和依赖项也与 JDK9+ 兼容。但是,详细介绍如何完成此操作超出了本 Maven Java 编译器教程的范围。
启用预览功能
一些较晚的 Java 版本(至少是 JDK 10、12 和 13)具有一些预览功能。预览版功能是 Java SDK 团队已实现但尚不确定是否应长期保留在 Java SDK 中的功能。默认情况下,Java SDK 中未启用这些功能。要使用它们,您必须明确启用它们。要在 Maven POM 文件中启用 Java 预览功能,请将compilerArgs元素插入到编译器配置中,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/67764.html