快捷搜索:  汽车  科技

maven 发行版本及测试版本切换(MavenJava编译器版本)

maven 发行版本及测试版本切换(MavenJava编译器版本)<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>

原文地址:http://tutorials.jenkov.com/Maven/java-compiler.html

maven 发行版本及测试版本切换(MavenJava编译器版本)(1)

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 编译器版本:

  1. 通过 Maven Java 编译器属性。
  2. 通过 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属性而不是sourcetarget属性。这是 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>

猜您喜欢: