Maven Java 编译器版本(翻译整理)

Maven Java 编译器版本(翻译整理)原文地址:http://tutorials.jenkov.com/maven/java-compiler.htmlMaven 使用的默认 Jav

欢迎大家来到IT世界,在知识的湖畔探索吧!

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

Maven Java 编译器版本(翻译整理)

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>

欢迎大家来到IT世界,在知识的湖畔探索吧!

这些属性必须包含在propertiesPOM 文件的元素中。

Maven Java 编译器插件

在您的 Maven POM 文件中设置 Java 编译器版本的第二个、最古老且更详细的方法是通过 Maven Java 编译器插件。以下是 Maven Java 编译器插件的配置:

欢迎大家来到IT世界,在知识的湖畔探索吧!<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属性代替的示例:

欢迎大家来到IT世界,在知识的湖畔探索吧!<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://itzsg.com/56730.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信