是否可以配置maven-compiler-plugin,使其既可以用JDK 8运行,又可以使用 JDK 12工作?我不确定它是否相关,但这是一个Spring项目。
1.配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<release>8</release>
</configuration>
</plugin>在JDK-12下可以编译,但在JDK-8下失败:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project xxxx:
Fatal error compiling: invalid flag: --release 2.配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>它错过了<release>8</release>参数,可以在JDK-8下编译,但是在JDK-12下失败:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project xxxx:
Fatal error compiling: CompilerException: NullPointerException我找到的所有可能的互联网源都建议使用<release>8</release>参数以避免JDK-12下的错误,但这会禁用JDK-8下的可编译性。
我们的源代码和目标兼容性是Java 8,我们需要使用好的普通mvn clean install (不提供配置文件!)构建代码!在使用JDK-12的开发人员机器上,但在Jenkins上,我们仍然必须保留JDK-8,还有一些保守的开发人员:)
发布于 2019-03-28 22:01:11
首先,您应该在pluginManagement中定义maven编译器插件,如下所示:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<...>
...此外,使用自动激活的配置文件,如下所示:
<profiles>
<profile>
<id>jkd-12-compile</id>
<activation>
<jdk>12</jdk>
</activation>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>8</release>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>jdk-8-compile</id>
<activation>
<jdk>[,8]</jdk>
</activation>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
</profiles>通常不需要一个mvn clean install。你通常只需要mvn clean verify..。
发布于 2019-08-28 15:25:42
tad更简单的解决方案依赖于使用属性,而不是显式配置条目。它不会因为任何它不支持的事情而抱怨。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<profiles>
<profile>
<id>jdk9+</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<properties>
<maven.compiler.release>8</maven.compiler.release>
</properties>
</profile>
</profiles>享受吧!
https://stackoverflow.com/questions/55404641
复制相似问题