Maven使用的默认Java编译器版本是Java 1.5。为了使Maven使用Java编译器的较新版本编译Java代码,需要在项目的POM文件(pom.xml)中显式指定Java编译器。

指定Java编译器版本的确切方式取决于你使用的是Java 8 或更早版本,还是Java 9或更高版本。从Java 9开始,Java获得了一些模块,这些模块在短期内会使编译有些复杂,但从长期来看应该会有所帮助。

一、 适用于Java 8和更早版本的Maven Java编译器

从Java 8 和更早版本开始,有两种方法可以在Maven POM文件中设置Java编译器版本:

  • 通过Maven Java编译器属性。
  • 通过Maven Java编译器插件。

以下将说明这两种在Maven中设置Java编译器版本的方法。

1、 Maven Java编译器属性

第一种,也是最简单的方法是通过Maven Java编译器属性:

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

这些属性必须包含在POM文件的properties元素中。

2、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>
二、完整Maven POM文件示例

这是使用上述两种机制设置的Java编译器版本的完整Maven POM文件。 请注意,你的POM文件中仅应使用一种机制。 该示例仅显示了两个示例,方便看到它们在POM文件中放置的位置。

示例1

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.nanosai</groupId><artifactId>grid-ops</artifactId><version>0.8.0</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>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
</project>

示例2

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.nanosai</groupId><artifactId>grid-ops</artifactId><version>0.8.0</version><packaging>jar</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</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编译器

对于Java 9和更高版本,使用插件版的一种变体,用release属性来代替source和target属性:

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

本示例在release属性中将Java版本设置为11。Java 11是Java的长期支持(LTS)版本。

还要注意,Maven Java编译器插件的版本已从3.6.1更改为3.8.0。

Maven 指定 Java 编译版本相关推荐

  1. maven项目修改java编译版本的方式

    简述 使用Maven编译Java项目,默认的jdk编译版本是1.5( 参考官网的说明->https://maven.apache.org/plugins/maven-compiler-plugi ...

  2. Maven配置JDK编译版本

    配置JDK编译版本 配置使用JDK 1.8编译运行项目 打开Maven的settings.xml文件 在profiles节点中,加入如下配置 <profile><id>jdk- ...

  3. IDEA报错总结:修改Java编译版本--maven项目

    之前写过2篇文章: 解决IDEA报错:Lambda expressions not supported at language level '7' IDEA报错解决:Error:(33, 35) ja ...

  4. Maven和Java多版本模块

    介绍 通常,项目具有最低Java版本要求,并且适用于其所有模块. 但是每条规则都有其例外,最近我偶然发现了以下问题. 我的一个开源项目对大多数模块要求使用Java 1.6,除了一个要求1.7版本的项目 ...

  5. Eclipse 中修改java编译版本

    修改方法是: 1:Preferences-->Java-->Compiler->Compiler compliance level,选择一个需要的版本,比如从默认的1.4改为5.0 ...

  6. linux查看java编译版本,升级linux系统中的java版本到1.8

    1安装jdk Java运行环境 1.1上传  jdk-8u161-linux-x64.tar.gz 源码包到centos 7 1.2 解压  tar -zxf jdk-8u161-linux-x64. ...

  7. idea设置java编译版本1.8

    1.先点击[File]-->[Settings-],所下所示: 2.依次点击[Build.Execution.Deployment]-->[Compiler]-->[Java Com ...

  8. 安卓 java编译_Android源码分析(七)-----如何解决java编译版本问题

    一 : 问题描述 Your version is: java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1 ...

  9. Android指定SDK编译版本

    第一种方式:Android.mk LOCAL_SDK_VERSION := 21 //Android21为5.0; Android6.0(23)以后动需要态申请权限第二种方式:AndroidManif ...

最新文章

  1. 什么是Attention机制以及Pytorch如何使用
  2. CSS——如何清除浮动
  3. 数据库分组选 第一条
  4. C/C++入门易错点及常用小技巧
  5. 前端学习(579):chrome devtools功能简介
  6. [优先队列] 洛谷 P1631 序列合并
  7. 北航出品,CVPR 安全AI大赛第二名:梯度细化提高对抗传递性
  8. ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案
  9. 如何转换为系统应用_如何将AVI转换为GIF
  10. 类和对象编程(四):拷贝构造函数
  11. 在文本框的光标处插入指定的文本(兼容IE6和Firefox)
  12. poj 3321 Apple Tree 树状数组
  13. VS2013 工具包修复记录
  14. 3D游戏角色模型设计都要学习什么?
  15. 2021年,小灰都读了哪些书?
  16. 网络显示连接,不能还是上网,找不到DNS怎么办?
  17. 亲脂性细胞膜染料: DiO, Dil, DiR, Did - MedChemExpress
  18. kitti 数据集点云使用笔记
  19. Autofac依赖注入
  20. 外卖O2O公司为何能得到天价估值

热门文章

  1. 虚拟机克隆之后的IP修改问题
  2. 【项目工程】利用安卓手机NFC功能和KPC物联网仿真平台的智能花盆设计
  3. w10系统服务器如何创建新用户,win10添加新用户的方法分享
  4. Large Scale Spectral Clustering with Landmark-Based Representation
  5. 【数学基础】欧式变换、相似变换、仿射变换、射影变换
  6. 云计算基础(二)—— 虚拟化
  7. Could not execute JDBC batch update异常的解决办法
  8. 华硕路由器WOL局域网唤醒失效解决方案
  9. cadence——基本操作6
  10. mysql netcdf_NetCDF Overview