我遇到了一个遗留项目的情况,如果使用1.8或1.9以外的JDK运行时调用Maven,我需要一个项目失败。原因是当前项目具有曾经是JDK一部分的依赖项,但不再从JDK 11开始。
这不同于为maven-plugin编译器指定源和目标版本(当前设置为8。)
构建已经失败了,抱怨无法解决的依赖关系,但我希望它失败时会显示一条消息:“您需要使用JDK 8/9运行时”(清晰始终是王道)
这只是一个权宜之计,以避免人们因使用JDK 11而对未编译的内容发送恐慌性电子邮件,我不能指望每个人都在自己的工具链中设置自己的JDK。xml。
您可以使用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,所以我们会得到一些奇怪的错误。 我想在中添加检查功能,这样当我们运行任何任务时,它都会首先检查版本,并立即打印错误和退出。 我尝试在第一行的中直接添加检查,但它仍然在检查发生之前执行一些其他任务,例如(、),当我运行: 如何正确地去做?
有什么建议吗?? 详细信息...