Maven设置JDK版本的两种方法实现
作者:Undefined443
Maven 设置 JDK 版本是通过 Apache Maven Compiler Plugin 插件实现的。它用于编译项目的源代码。
方法一
有时候你可能需要将某个项目编译到与当前使用的 JDK 版本不同的语言版本。你可以在编译时为 javac
工具添加 -source
和 -target
选项来实现这样的功能。也可以配置 Apache Maven Complier Plugin 插件以在编译过程中提供这两个选项。
例如,如果你想要使用 Java 8 的语言特性(-source 1.8
)并且还希望编译后的类与 JVM 1.8 兼容(-target 1.8
),你可以在 pom.xml
文件中添加下面两个属性,这是插件参数的默认属性名称:
<project> ... <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> ... </project>
或者直接配置插件(效果同上):
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> ... </plugins> ... </build> ... </project>
如果你没有配置 source
和 target
属性,默认值是 1.8
source
选项指定了你的源代码中能够使用什么版本的语言特性,target
选项指定了编译出来的 class 文件能够在什么版本的 JVM 上运行。一般来说这两个值设置成一样即可。
Setting the -source and -target of the Java Compiler | Apache Maven
方法二(推荐)
从 JDK 9 开始, javac
工具可以接受 --release
选项,用于指定要针对哪个 Java SE 版本构建项目。例如,你安装了 JDK 11 并且被 Maven 使用,但你想要针对 Java 8 构建项目。--release
选项确保代码编译遵循指定版本的语言规则,并且生成的类也针对该版本以及该版本的公共 API。这意味着,与 -source
和 -target
选项不同,编译器将在你使用在先前 Java SE 版本中不存在的 API 时检测并生成错误。
自 Apache Maven Complier Plugin 插件的 3.6 版本起,可以通过设置 <maven.compiler.release>
属性提供此选项:
<project> ... <properties> <maven.compiler.release>8</maven.compiler.release> </properties> ... </project>
或者直接配置插件(效果同上):
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.12.1</version> <configuration> <release>8</release> </configuration> </plugin> ... </plugins> ... </build> ... </project>
Setting the --release of the Java Compiler | Apache Maven
到此这篇关于Maven设置JDK版本的两种方法实现的文章就介绍到这了,更多相关Maven设置JDK版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!