要使用指定的 JDK 版本打包 Maven 项目,需要确保 Maven 使用目标 JDK 进行编译、测试和打包。以下是具体实现方法:
在项目的 pom.xml 中配置 maven-compiler-plugin,强制指定 JDK 版本:
<build>
<plugins>
<!-- 配置编译器插件指定JDK版本 -->
<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>
<!-- 指定JDK工具路径(可选,自动检测不到时配置) -->
<executable>/usr/lib/jvm/java-1.8.0-openjdk/bin/javac</executable>
<fork>true</fork> <!-- 必须设置为true才能使用指定的executable -->
<!-- 编码设置 -->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
打包时通过 -D 参数临时指定 JDK 版本,无需修改 pom.xml:
修改 Maven 全局配置文件 settings.xml
(通常位于 ~/.m2/settings.xml 或 Maven安装目录/conf/settings.xml),添加如下配置:
<profiles>
<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>
</profiles>
打包后可以通过以下命令检查生成的 class 文件版本:
- JDK 1.8 对应的 major version 是 52
- JDK 11 对应的 major version 是 55
- 确保指定的 JDK 已在系统中安装并可访问
executable 路径需要替换为实际的 javac 路径(Windows 系统通常为 C:\Program Files\Java\jdk1.8.0_xxx\bin\javac.exe)
- 如果项目依赖其他库,需确保依赖库与指定的 JDK 版本兼容
通过以上方法,即可强制 Maven 使用指定的 JDK 版本进行项目打包。