当系统中装有多个 JDK 版本时,如果控制 Maven 能够指定到正确的版本
更多精彩
- 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线
出现的问题
- 在使用
mvn clean package -Dmaven.test.skip=true
对项目进行打包时 - 发现进度一直卡在编译无法继续执行
- 待编译项目 pom.xml 中指定的 JDK 版本是 1.8
- 通过
mvn -version
发现 Maven 获取的 JDK 版本是 11 - 这就是导致 Maven 无法顺利编译项目的根本原因
查看当前 Maven 版本
- 下图中可以看到,Maven 当前指定的是 JDK 11
查看当前 JDK 版本
- 下图中可以看到,当前 JDK 版本是 1.8 ,很明显和上图 Maven 获取到的版本不一致
查看当前系统配置的所有 JDK 版本
- 下图中可以看到,当前系统配置了三个版本的 JDK ,而系统默认的是 JDK 11 ,与 Maven 获取到的一致
查看通过 JENV 管理的 JDK 版本
- 下图中可以看到,通过 JENV 切换到的 JDK 版本是 1.8 ,与
java -version
获取到的一致 - 这就说明 JENV 虽然可以管理当前 JDK 版本,但是无法切换当前系统的默认 JDK
终极解决方案
- 在终端输入以下脚本,强制指定
JAVA_HOME
的默认版本是 1.8- 这样虽然无法改变当前系统的默认 JDK 版本
- 但是可以控制其他软件获取到的 JDK 版本,这就已经满足需求了
echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 1.8)" >> ~/.bash_profile
source ~/.bash_profile
再次查看当前 Maven 版本
- 下图中可以看到,Maven 当前指定的 JDK 已经替换成了 1.8
再次查看当前系统配置的所有 JDK 版本
- 下图中可以看到,当前系统默认的 JDK 版本依旧是 11