带有 JDK11 的 Maven:javac:无效标志:--release
maven with JDK11: javac: invalid flag: --release
我正在尝试使用 java 11 设置一个简单的 maven 项目。因为我想将 JAVA_HOME 保留为版本 8,所以我正在使用 maven-toolchains-plugin
来制作maven 在这个项目中使用 jdk11。
虽然 Maven 成功找到了 jdk-11.0.1 的匹配工具链,但我一直收到“javac:无效标志:--release”。我做错了什么?
插件配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>11</version>
</jdk>
</toolchains>
</configuration>
</plugin>
工具链定义为:
<toolchain>
<type>jdk</type>
<provides>
<version>11</version>
<id>JavaSE-1.11</id>
</provides>
<configuration>
<jdkHome>C:\Program Files\Java\jdk-11.0.1\bin</jdkHome>
</configuration>
<toolchain>
更改 jdk 版本应该可以解决大部分问题。替换
<version>1.11</version>
和
<version>11</version>
请确保您的 Maven 配置为 JDK-11,使用命令 mvn -version
并确认那里的 Java 版本。您还可以验证配置的 toolchains.xml
JDK。
如果您尝试使用不同版本的编译器进行编译,您需要确保在 maven-compiler-plugin
下执行:
<executions>
<execution>
<id>java11</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<release>11</release>
<jdkToolchain>
<version>11</version>
</jdkToolchain>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java11</compileSourceRoot>
</compileSourceRoots>
<outputDirectory>${project.build.outputDirectory}/META-INF/versions/11</outputDirectory>
</configuration>
</execution>
</executions>
这里是上面提到的sample pom.xml
。
正如我所发现的,配置很好。问题是 toolchains.xml
中的 jdkHome
指向 \jdk-11.0.1\bin
方向而不是直接指向 \jdk-11.0.1
.....使用 <jdkHome>C:\Program Files\Java\jdk-11.0.1</jdkHome>
解决了问题..
我正在尝试使用 java 11 设置一个简单的 maven 项目。因为我想将 JAVA_HOME 保留为版本 8,所以我正在使用 maven-toolchains-plugin
来制作maven 在这个项目中使用 jdk11。
虽然 Maven 成功找到了 jdk-11.0.1 的匹配工具链,但我一直收到“javac:无效标志:--release”。我做错了什么?
插件配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>11</version>
</jdk>
</toolchains>
</configuration>
</plugin>
工具链定义为:
<toolchain>
<type>jdk</type>
<provides>
<version>11</version>
<id>JavaSE-1.11</id>
</provides>
<configuration>
<jdkHome>C:\Program Files\Java\jdk-11.0.1\bin</jdkHome>
</configuration>
<toolchain>
更改 jdk 版本应该可以解决大部分问题。替换
<version>1.11</version>
和
<version>11</version>
请确保您的 Maven 配置为 JDK-11,使用命令 mvn -version
并确认那里的 Java 版本。您还可以验证配置的 toolchains.xml
JDK。
如果您尝试使用不同版本的编译器进行编译,您需要确保在 maven-compiler-plugin
下执行:
<executions>
<execution>
<id>java11</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<release>11</release>
<jdkToolchain>
<version>11</version>
</jdkToolchain>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java11</compileSourceRoot>
</compileSourceRoots>
<outputDirectory>${project.build.outputDirectory}/META-INF/versions/11</outputDirectory>
</configuration>
</execution>
</executions>
这里是上面提到的sample pom.xml
。
正如我所发现的,配置很好。问题是 toolchains.xml
中的 jdkHome
指向 \jdk-11.0.1\bin
方向而不是直接指向 \jdk-11.0.1
.....使用 <jdkHome>C:\Program Files\Java\jdk-11.0.1</jdkHome>
解决了问题..