当前位置: 首页 > 知识库问答 >
问题:

如果Java运行时高于给定版本,则强制Maven失败

籍昱
2023-03-14

我遇到了一个遗留项目的情况,如果使用1.8或1.9以外的JDK运行时调用Maven,我需要一个项目失败。原因是当前项目具有曾经是JDK一部分的依赖项,但不再从JDK 11开始。

这不同于为maven-plugin编译器指定源和目标版本(当前设置为8。)

构建已经失败了,抱怨无法解决的依赖关系,但我希望它失败时会显示一条消息:“您需要使用JDK 8/9运行时”(清晰始终是王道)

这只是一个权宜之计,以避免人们因使用JDK 11而对未编译的内容发送恐慌性电子邮件,我不能指望每个人都在自己的工具链中设置自己的JDK。xml。

共有1个答案

夔修伟
2023-03-14

您可以使用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

 类似资料:
  • 一点背景:我是一个AEM项目的FE开发人员。该项目是一个SPA AEM作为云服务。我从命令行运行作者实例。 我的电脑规格是: CPU: Intel(R)Core(TM)i5-7400 CPU@3.00GHz 3.00 GHz RAM: 24.0 GB SSD: 476 GB 操作系统:Windows 10 Pro 对于我们正在使用的AEM项目 Javasdk 11 Maven 3.6.3 我已经设

  • 我当前的java版本是7: 我有命令,其中设置为8: 现在的问题是。当我在项目中运行我的一个配置文件(有生成文件的maven exec插件)时: 我得到了例外: 所以它似乎仍然需要我的系统java。为什么当mvn版本打印java8时?当我更改我的系统java时,它可以正常工作。这是maven的一些功能,也可能是我使用的插件问题? 更新: 调试maven exec插件时,我看到这一行: 所以问题是如

  • 是否可能在运行时检索特定maven依赖项的版本? 例如。对于pom.xml: 我想检索具有工件ID的特定依赖项的版本。

  • 问题内容: 我注意到在Maven工件的JAR中,project.version属性包含在两个文件中: 是否有建议的方式在运行时读取此版本? 问题答案: 你无需访问特定于Maven的文件即可获取任何给定库/类的版本信息。 你可以简单地使用来获取存储在中的版本信息。幸运的是,足够聪明,不幸的是,默认情况下,也不将正确的信息写入清单! 相反,必须修改的设置元素和,如下所示: 理想情况下,应将此配置放入公

  • 我的一个项目需要Java1.8,但有时我们没有注意到我们使用的是较旧的Java,所以我们会得到一些奇怪的错误。 我想在中添加检查功能,这样当我们运行任何任务时,它都会首先检查版本,并立即打印错误和退出。 我尝试在第一行的中直接添加检查,但它仍然在检查发生之前执行一些其他任务,例如(、),当我运行: 如何正确地去做?

  • 有什么建议吗?? 详细信息...