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>

如果你没有配置 sourcetarget 属性,默认值是 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 版本的更多相关文章

  1. maven设置jdk版本

    方法一:在maven文件夹下的settings.xml中添加 <profile> <id>jdk-1.8</id> <activation> <a ...

  2. 修改maven项目jdk版本,并解决Dynamic Web Module 3.1 requires Java 1.7 or newer错误

    使用maven的时候,默认会使用1.5版本的JDK,并且创建项目时也会是1.5版本. 但是我想用JDK1.7版本,所以我手动将maven项目JDK改为1.7版本. 手动修改JDK版本为1.7以后,项目 ...

  3. [Java SE/JDK]Intellij IDEA中设置JDK版本

    1 Intellij IDEA 修改JDK版本 第1步:配置JDK环境变量 装好JDK之后,要添加一个环境变量:JAVA_HOME 第2步:修改Idea配置 由Maven决定的版本 <build ...

  4. 解决java.io.IOException: Cannot run program "javac"问题,并设置jdk版本

    原因:没有配置java路径 解决方法:设置java_home路径 设置jdk版本是10的方法:在sbt文件中添加一行: javacOptions := Seq(") 然后重新执行命令:sbt ...

  5. 【转】如何修改maven工程jdk版本

    1.使用maven的时候,默认会使用1.5版本的JDK,并且也是编译成1.5的,我的电脑里面用的JDK是1.7的,1.8也出来了,没理由还用1.5的吧!所以我手动改成了1.7,郁闷的是,每次 mave ...

  6. 动态修改maven的jdk版本

    当环境变量jdk为1.7,项目为jdk1.8,用mvn clean package指令打包项目时,想不修改环境变量的情况下,修改maven的jdk版本 方法如下: 官网给出了方法 https://ma ...

  7. Maven 修改jdk版本

    Maven 修改jdk版本方法1: <build> <plugins> <plugin> <groupId>org.apache.maven.plugi ...

  8. eclipse中使用Maven管理java工程设置jdk版本为jdk1.8

    使用Maven管理Java工程时,maven可以自动下载工程中依赖的jar包,这对于大型的项目非常方便.但在初次使用eclipse新建maven工程时遇到一些问题,我的jdk安装的是1.8版本,在配置 ...

  9. idea中maven中jdk版本的选择(转)

    转自:https://www.cnblogs.com/joshul/p/6222398.html IntelliJ IDEA中Maven项目的默认JDK版本   在IntelliJ IDEA 15中使 ...

  10. maven 使用记录之修改 maven默认jdk版本

    maven package执行的时候会遇到jdk版本不对的问题 :原因是 maven所指定的jdk版本与项目使用的jdk版本不一致 1.项目属性的 java compiler可以设置 2.直接修改 m ...

随机推荐

  1. 搭建redis-sentinel(哨兵)

    1.先创建redis一主两从的配置文件 2.编辑配置文件 cat >> /data/8012/redis.conf <<EOF port 8012 daemonize yes ...

  2. 韦东山freeRTOS系列教程之【第五章】队列(queue)

    目录 系列教程总目录 概述 5.1 队列的特性 5.1.1 常规操作 5.1.2 传输数据的两种方法 5.1.3 队列的阻塞访问 5.2 队列函数 5.2.1 创建 5.2.2 复位 5.2.3 删除 ...

  3. Spring的AOP快速实现通用日志打印

    需求分析 针对VideoService接口实现日志打印 三个核心包 spring-aop:AOP核心功能,例如代理工厂 aspectjweaver:简单理解,支持切入点表达式 aspectjrt:简单 ...

  4. 3 - 【RocketMQ 系列】CentOS 7.6 安装部署RocketMQ

    四.安装管理面板 1.介质下载 下载到本地再上传,下载地址:https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketm ...

  5. RS232转PN协议网关模块连接PLC和霍尼韦尔条码扫描器通信

    为了更快地输入信息,许多设备都配备了条码扫描器,但条码扫描器不能直接与CPU通信.最直接和方便的方法是加RS232转PN协议网关模块(BT-PNR20).本文将深入研究如何利用巴图自动化的RS232转 ...

  6. [oeasy]python0010 - python虚拟机解释执行py文件的原理

    ​ 解释运行程序 回忆上次内容 我们这次设置了断点 设置断点的目的是更快地调试 调试的目的是去除​​bug​​ 别害怕​​bug​​ 一步步地总能找到​​bug​​ 这就是程序员基本功 调试​​deb ...

  7. 音频文件降噪及python示例

    操作系统 :Windows 10_x64 Python版本:3.9.2 noisereduce版本:3.0.2 从事音频相关工作,大概率会碰到降噪问题,今天整理下之前学习音频文件降噪的笔记,并提供Au ...

  8. XCode 编译 PAG 源码

    最近工作中要使用PAG替换Lottie,为了方便阅读源码,使用XCode对其源码进行了编译. 1 下载源码 编译源码首先要下载源码,有关PAG源码可直接到github上下载. 2 添加相关依赖 下载源 ...

  9. 题解 CF653F Paper task

    CF653F Paper task 给定一个长度为 \(n\) 和括号串,求本质不同的合法括号串个数.\(n\le 5\times 10^5\). 考虑如果不是求本质不同,可以想到 DP. 设 \(f ...

  10. Linux环境 yum,apt-get,rpm,wget 区别

    Linux环境 yum,apt-get,rpm,wget 区别 一般来说linux系统基本上分两大类:cat /etc/issue查看linux系统版本RedHat系列:Redhat.Centos.F ...