如果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


以上是如果Java运行时高于给定版本,则强制Maven失败的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>