当前位置: 首页 > news >正文

Maven指定JDK

在使用 Maven 管理 Java 项目时,有时需要指定使用特定的 JDK 版本。这通常是因为项目需要与特定版本的 JDK 兼容,或者在不同的开发环境中需要确保使用正确的 JDK 版本。通常来说在IDEA工具中设置了正确的JDK版本,使用IDEA编译也不会有任何异常,但是使用mvn命令编译时则会出现异常。

1.错误案例

JAVA_HOME是java 1.8,但是开发环境使用了java 23,使用IDEA编译不报错,但是使用mvn报错,虽然设置了编译版本,但是因为mvn使用了JAVA_HOME作为JDK,所以一直提示无效的目标发行版: 23。

 2.解决方案

1. 指定mvn的jdk

Maven 支持通过 toolchains 来指定 JDK 版本,在maven中的toolchains.xml

<toolchains> 
 <toolchain>
    <type>jdk</type>
    <provides>
      <version>23</version>
      <vendor>openjdk</vendor>
    </provides>
    <configuration>
      <jdkHome>C:\SoftProgram\open jdk-23.0.2</jdkHome>
    </configuration>
  </toolchain>
</toolchains>

然后pom.xml 中引用这个 toolchain

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-toolchains-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>toolchain</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <toolchains>
                        <jdk>
                            <version>23</version>
                            <vendor>openjdk</vendor>
                        </jdk>
                    </toolchains>
                </configuration>
            </plugin>

使用mvn clean compile不会再提示无效的目标发行版: 23,而且通过编译日志也可以看到使用了配置的jdk,但是依旧会编译报错,因为mvn依旧使用JAVA_HOME执行编译。

2.修改JAVA_HOME环境变量 

因为mvn一直使用了不正确的JAVA_HOME环境变量,所以不管pom.xml如何设置mvn编译总是会报错,所以需要设置JAVA_HOME的环境变量。

export JAVA_HOME=/path/to/jdk-11  # Linux/Mac
//windows这种方式只会在一个命令框生效,不会永久改变。
set JAVA_HOME=C:\SoftProgram\open jdk-23.0.2  # Windows

 设置完成之后查看mvn -v

然后重新执行编译成功

 

 

 

相关文章:

  • function call为大模型装上触手
  • Java中的分布式锁:原理、实现与最佳实践
  • webpack介绍
  • Android Compose Surface 完全指南:从入门到花式操作
  • 四种常见的 API 架构风格(带示例)
  • vue2中,在table单元格上右键,对行、列的增删操作(模拟wps里的表格交互)
  • 无人机全景应用解析与技术演进趋势
  • AI开源竞赛与硬件革命:2025年3月科技热点全景解读——阿里、腾讯领跑开源,英特尔、台积电重塑算力格局
  • 考研数学复习之定积分定义求解数列极限(超详细教程)
  • HTML5教程之标签(7)
  • Java关键字与标识符
  • 基于6自由度搬运机器人完成单关节伺服控制实现的详细步骤及示例代码
  • 基于YOLO11深度学习的遥感视角地面房屋建筑检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
  • 【GNN】第四章:图卷积层GCN
  • Linux 服务器安全配置:密码复杂度与登录超时设置
  • 缓存id路由页面返回,历史路由栈
  • SpringBoot基础Kafka示例
  • 深度学习subword分词BPE
  • 在 DEM 中模拟粒子破损
  • 领域驱动设计(DDD)是什么?
  • 铲屎官花5万带猫狗旅行,宠旅生意有多赚?
  • 中国人民银行:5月8日起降息,15日起降准
  • 同为“东部重要中心城市”后交出首份季报:宁杭苏表现如何?
  • 云南昆磨高速发生交通事故致3辆车起火,昆明消防:幸无人员伤亡
  • 41年轮回,从洛杉矶奔向洛杉矶,李宁故地重游再出发
  • 五一假期上海两大机场客流量超193万人次,创历年同期最高