【发布时间】:2019-03-28 18:32:32
【问题描述】:
是否可以配置 maven-compiler-plugin 使其同时与 JDK 8 和 JDK 12 一起工作?我不确定它是否相关,但它是一个 Spring Boot 项目。
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
我发现所有可能的 Internet 资源都建议使用 <release>8</release> 参数来避免 JDK-12 下的错误,但这会禁用 JDK-8 下的可编译性。
我们的源代码和目标代码兼容性是 Java 8,我们需要在使用 JDK-12 的开发人员机器上使用良好的旧纯 mvn clean install(不提供配置文件!)构建代码,还有在 Jenkins 上,我们仍然要保留 JDK-8,而且我们也有一些保守的开发人员:)
【问题讨论】:
标签: java maven spring-boot build maven-compiler-plugin