gpt4 book ai didi

java - 配置 maven-compiler-plugin 使其适用于 JDK-8 和 JDK-12(在 Spring Boot 项目中)

转载 作者:行者123 更新时间:2023-12-01 14:14:19 24 4
gpt4 key购买 nike

是否可以配置 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

我找到的所有可能的互联网资源建议使用 <release>8</release>参数可以避免 JDK-12 下的错误,但这会禁用 JDK-8 下的可编译性。

我们的源和目标兼容性是 Java 8,我们需要使用良好的旧式 mvn clean install 构建代码(不提供配置文件!)在开发人员的机器上使用 JDK-12,但也在 Jenkins 上,我们仍然必须保留 JDK-8,而且我们还有一些保守的开发人员:)

最佳答案

首先,您应该像这样在 pluginManagement 中定义 maven-compiler-plugin:

  <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...

关于java - 配置 maven-compiler-plugin 使其适用于 JDK-8 和 JDK-12(在 Spring Boot 项目中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55404641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com