配置 maven-compiler-plugin 指定编译 JDK 版本号

使用 Maven 构建项目时,建议最好指定编译 JDK 版本。首先,因为 Maven 默认的编译 JDK 版本一般比较低,好像是 1.5;其次,项目代码上线通常是由打包机编译打包,然后部署到测试环境最后部署到生产的,而打包机上的 Maven 默认使用什么编译 JDK 版本我们是不确定的。

修改项目的编译 JDK 版本

Maven 编译使用的是 maven-compiler-plugin 插件,该插件支持在项目的 pom.xml 文件中指定 JDK 版本,设置方式有两种:

第一种,设置 properties:

1
2
3
4
5
6
7
8
<project>
[...]
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
[...]
</project>

第二种,直接修改插件的 configuration:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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>

configuration 标签里不止可以设置编译 JDK 版本,还可以设置如下更多属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<configuration>
<!-- 源代码使用的 JDK 版本 -->
<source>1.8</source>
<!-- 需要生成的目标 class 文件的编译版本 -->
<target>1.8</target>
<!-- 字符集编码 -->
<encoding>UTF-8</encoding>
<!-- 是否跳过测试 -->
<skipTests>true</skipTests>
<showWarnings>true</showWarnings>
<!-- 指定 javac 命令 -->
<executable><!-- path-to-javac --></executable>
<!-- 编译器使用的初始内存 -->
<meminitial>128m</meminitial>
<!-- 编译器使用的最大内存 -->
<maxmem>512m</maxmem>
</configuration>

以上两种选其一即可!!!

修改 Maven 默认的编译 JDK 版本

以上配置方法只针对某个项目生效,有时候在本地开发是不想重复配置,也可以配置 Maven 默认的编译 JDK 版本。

在 Maven 安装目录中找到 conf/settings.xml 文件,在 <profiles> 标签下添加配置:

1
2
3
4
5
6
7
8
9
10
11
12
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

参考文章

http://maven.apache.org/components/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html