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. 解决BitBucket仓库较大拉取失败,使用SSH拉取

    HTTPS 拉取 如果使用的是https拉取,可使用以下命令尝试,如果还是失败,可使用 ssh 拉取 git clone --depth=1 xxxx.git --depth=1:拉取最近1次提交记录 ...

  2. SpringBoot 日志文件 logback-spring.xml

    日志文件 将logback-spring.xml配置文件,放到:/src/main/resources中 <?xml version="1.0" encoding=" ...

  3. 【PHP】关于fastadmin框架中使用with进行连表查询时setEagerlyType字段的理解

    前言 FastAdmin是我第一个接触的后台管理系统框架.FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常 ...

  4. Eggjs 设置跨域请求 指定地址跨域 nodejs

    首先egg自身框架没有直接设置允许跨域请求的功能和接口,所以需要第三方包来设置跨域请求! 先安装第三方包来设置跨域,使用egg-cors // npm npm i egg-cors --save // ...

  5. Java的TimeStamp

    Java的TimeStamp 很简单,我们可以这样声明 Timestamp ts=new Timestamp(new Date().getTime());这样我们就可以得到时间比较具体的一个类型转换! ...

  6. redis-sort排序

    sort命令可以对列表(lpush rpush).集合(sadd srem).有序集合(zadd)进行排序 1.复习一下三种数据结构(1)列表 lpush  key val1 val2 val3 .. ...

  7. [oeasy]python0024_ 输出时间_time_模块_module_函数_function

    ​ 输出时间 回忆上次内容 ​print​​函数 有个默认的 ​​end参数​ ​​end参数​​ 的值可以是任意字符串 ​​end参数​​ 的值会输出到结尾位置 ​​end参数​​ 的默认值是 ​​ ...

  8. 工作单元(UnitOfWork) 模式 (1)

    在开始UnitOfWork模式之前有必要回顾下我们耳熟能详的Data Access Object(DAO)模式,即数据访问对象.DAO是一种简单的模式,我们构建应用的时候经常会使用到它,它的功能就是将 ...

  9. mybatisplus轻松完成一次模糊+分页查询

    之前一直用mybatis+pageinfo完成模糊+分页查询,还需要手写sql语句,之前一直没做尝试,今天试了试mybatisplus一个人完成模糊+分页,挺简单的 有一个小插曲是,我的前端接受的da ...

  10. 如何让SQL Server像MySQL一样拥有慢查询日志(Slow Query Log慢日志)

    如何让SQL Server像MySQL一样拥有慢查询日志(Slow Query Log慢日志) SQL Server一直以来被人诟病的一个问题是缺少了像MySQL的慢日志功能,程序员和运维无法知道数据 ...