Maven指定JDK

发布于:2025-03-12 ⋅ 阅读:(27) ⋅ 点赞:(0)

在使用 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

然后重新执行编译成功