我正在尝试用java11建立一个简单的maven项目,因为我想让JAVA_HOME保持版本8,所以我使用maven-toolchains-plugin让maven在这个项目中使用jdk11。
虽然maven成功地为jdk-11.0.1找到了匹配的工具链,但我一直收到“javac: invalid flag:--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>发布于 2018-12-01 23:39:45
正如我所发现的,配置是很好的。问题是toolchains.xml中的jdkHome指向\jdk-11.0.1\bin方向,而不是直接指向\jdk-11.0.1 .使用<jdkHome>C:\Program Files\Java\jdk-11.0.1</jdkHome>解决了这个问题。
发布于 2018-12-01 22:23:38
更改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。
https://stackoverflow.com/questions/53571709
复制相似问题