编译配置与 Java 版本
maven-compiler-plugin 配置 Java 编译版本和编译参数。
Java 版本配置
属性配置
XML
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
插件配置
XML
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
source vs target
| 参数 | 说明 |
|---|---|
| source | 源码版本 |
| target | 字节码版本 |
编译参数配置
compilerArgs
XML
<configuration>
<compilerArgs>
<arg>-parameters</arg> <!-- 保留参数名 -->
<arg>-Xlint:unchecked</arg> <!-- 未检查警告 -->
<arg>-Xlint:deprecation</arg> <!-- 过期 API 警告 -->
</compilerArgs>
</configuration>
常用参数
| 参数 | 说明 |
|---|---|
| -parameters | 保留方法参数名 |
| -Xlint:all | 所有警告 |
| -Xlint:unchecked | 未检查类型转换警告 |
| -Xlint:deprecation | 过期 API 警告 |
编译警告控制
显示警告
XML
<configuration>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
警告为错误
XML
<configuration>
<failOnWarning>true</failOnWarning>
</configuration>
编码配置
XML
<configuration>
<encoding>UTF-8</encoding>
</configuration>
注解处理器配置
启用注解处理
XML
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</path>
</annotationProcessorPaths>
</configuration>
多处理器
XML
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.3</version>
</path>
</annotationProcessorPaths>
禁用注解处理
XML
<configuration>
<proc>none</proc> <!-- 禁用 -->
</configuration>
增量编译
XML
<configuration>
<useIncrementalCompilation>true</useIncrementalCompilation>
</configuration>
多版本 JAR
配置多版本
XML
<configuration>
<source>11</source>
<target>11</target>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
编译优化
JVM 参数
Bash
export MAVEN_OPTS="-Xmx2g"
mvn compile
并行编译
XML
<configuration>
<fork>true</fork>
<memInitial>512m</memInitial>
<maxMem>1024m</maxMem>
</configuration>
Java 版本矩阵
| Maven 版本 | 支持 Java 版本 |
|---|---|
| 3.8.x | Java 8 - 17 |
| 3.9.x | Java 8 - 21 |
Spring Boot 配置
父 POM 继承
XML
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
</parent>
<properties>
<java.version>17</java.version>
</properties>
release 参数
替代 source/target
XML
<configuration>
<release>17</release> <!-- 同时设置 source 和 target -->
</configuration>
Java 9+ 推荐
release 参数比 source+target 更精确。
编译测试代码
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile-test</id>
<phase>test-compile</phase>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</execution>
</executions>
</plugin>
要点总结
- maven.compiler.source/target 配置 Java 版本
- source 源码版本,target 字节码版本
- release 替代 source+target(Java 9+)
- compilerArgs 配置编译参数
- annotationProcessorPaths 配置注解处理器
- encoding 配置源码编码
- Spring Boot 使用 java.version 属性
- showWarnings 显示编译警告
📝 发现内容有误?点击此处直接编辑