您的位置 首页 java

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

原文地址: 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>  

这些属性必须包含在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="#34;
 xmlns:xsi="#34;
 xsi:schemaLocation="
 #34;>

<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>  

文章来源:智云一二三科技

文章标题:Maven Java 编译器版本(翻译整理)

文章地址:https://www.zhihuclub.com/191046.shtml

关于作者: 智云科技

热门文章

网站地图