如果Java运行时高于给定版本,则强制Maven失败
我有一个遗留项目的情况,如果使用 1.8 或 1.9 以外的 JDK 运行时调用 Maven,我需要一个项目失败。原因是当前项目的依赖项曾经是 JDK 的一部分,但从 JDK 11 开始不再存在。
这与为 maven-plugin 编译器(当前设置为 8)指定源和目标版本不同。
构建已经失败,抱怨无法解析的依赖关系,但我希望它失败并显示一条消息,说“您需要使用 JDK 8/9 运行时”(清晰度始终为王。)
这只是一个权宜之计,以避免人们发送关于未编译的恐慌电子邮件,因为他们使用了 JDK 11+,并且我不能依赖每个人在他们的 toolchains.xml 中设置自己的 JDK。
回答
您可以使用 Maven 执行器插件:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce-java</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.8,9]</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
注意:我没有测试范围表达式。
来源:https : //maven.apache.org/enforcer/enforcer-rules/requireJavaVersion.html