TempGo
发布于 2026-05-01 / 2 阅读
0
0

在 Maven 中设置 Java 版本

1. 概述

在本篇简短教程中,我们将介绍如何在 Maven 中设置 Java 版本

在继续之前,我们可以 查看 Maven 默认使用的 JDK 版本。执行 mvn -v 命令会显示 Maven 运行时所使用的 Java 版本。

2. 使用 Compiler 插件

我们可以在 编译器插件 中指定所需的 Java 版本。

2.1. Compiler 插件

第一种做法是在编译器插件相关属性中设置版本:

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>

Maven 编译器对应命令行中的 -target-source 版本。若要使用 Java 8 的语言特性,-source 应设为 1.8

此外,为使编译后的类文件与 JVM 1.8 兼容,-target 也应设为 1.8

二者的默认值均为 1.6。

也可以直接配置编译器插件:

<plugins>
    <plugin>    
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>

maven-compiler-plugin 还提供其他配置项,使我们能在 -source-target 之外对编译过程做更细的控制。

2.2. Java 9 及更高版本

此外,从 JDK 9 起可以使用新的 -release 命令行选项。该参数会自动将编译器配置为生成与指定平台版本实现相链接的 class 文件。

默认情况下,仅使用 -source-target 并不能保证跨版本编译(cross-compilation)正确。

这意味着我们无法保证应用能在更旧的平台版本上运行。此外,要为更旧的 Java 版本编译并运行程序,通常还需要指定 -bootclasspath

若要正确跨版本编译,新的 -release 选项会一并替代三个标志:-source-target-bootclasspath

将前面的示例改写后,可在插件属性中这样声明:

<properties>
    <maven.compiler.release>17</maven.compiler.release>
</properties>

对于从 3.6 版起的 maven-compiler-plugin,还可以这样写:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.12.1</version>
    <configuration>
        <release>7</release>
    </configuration>
</plugin>

注意:我们可以通过新的 <release> 元素指定 Java 版本。 本例中,我们将应用编译为面向 Java 7。

而且,本机不必安装 JDK 7;Java 17 已包含将新语言特性与 JDK 7 进行链接所需的全部信息。

3. Spring Boot 的约定

Spring Boot 应用在 pom.xmlproperties 中指定 JDK 版本。

首先,需要将 spring-boot-starter-parent 作为项目的父 POM:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
</parent>

该父 POM 会为我们配置默认插件及多项属性,其中包括 Java 版本——默认一般为 1.8

不过,可以通过 java.version 属性覆盖父 POM 的默认版本:

<properties>
    <java.version>17</java.version>
</properties>

通过设置 java.version 属性,我们声明源码与目标 Java 版本与所配置的值一致(上例为 17)。

务必记住:该属性属于 Spring Boot 的约定。此外,从 Spring Boot 2.0 起,最低要求为 Java 8。

这意味着无法在更旧的 JDK 上使用或配置 Spring Boot。

4. 小结

本篇简短教程说明了在 Maven 项目中设置 Java 版本的常见方式。

要点归纳如下:

  • 仅在使用 Spring Boot 时才能使用 <java.version>
  • 简单场景下,使用 maven.compiler.sourcemaven.compiler.target 属性通常最合适。
  • 若要对编译过程做更细控制,请使用 maven-compiler-plugin<configuration> 配置。

评论