未能执行目标 org.apache.maven.plugins:maven-enforcer-plugin

Posted

技术标签:

【中文标题】未能执行目标 org.apache.maven.plugins:maven-enforcer-plugin【英文标题】:Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin 【发布时间】:2018-01-02 09:39:14 【问题描述】:

我有一个 maven spring 项目,但是当我尝试运行它时,我无法......关于它的一些想法...... 接下来是错误信息:

BUILD FAILURE
------------------------------------------------------------------------
Total time: 4.532s
Finished at: Wed Jul 26 16:04:06 COT 2017
Final Memory: 17M/196M
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce
(enforce-versions) on project SIMI: Some Enforcer rules have failed. Look above for
specific messages explaining why the rule failed. -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.

使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。

有关错误和可能的解决方案的更多信息,请阅读以下文章: [求助1]http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

【问题讨论】:

drive.google.com/file/d/0Bz-Mr5XgEX-rQ3Y3U3BYNUFuaU0/… 这里是 POM.XML 文件 你能发布完整的堆栈跟踪吗?它说“在上面查看特定消息”。你也可以发布父母的 pom.xml 吗?我相信它包含实际的执行器插件,因为这个 pom 没有它。 如果没有堆栈跟踪的上半部分,很难帮助您查看哪个执行器规则失败。 【参考方案1】:

如果您使用的是maven-enforcer-plugin1.4.1 版本并导致此错误,那么您需要使用旧版本的maven-enforcer-plugin。您可以在下面找到 Maven 依赖项:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.3.1</version>
</plugin>

可以从下面的链接中找到其他版本。

https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-enforcer-plugin

另外,请检查您的 Maven 版本。如果您使用的是maven 3.0.x,那么您需要使用maven-enforcer-plugin 1.4.1

【讨论】:

【参考方案2】:

可能导致此问题的一件事是,在您的项目中的 POM 文件中设置了所需的 java 或 maven 版本。你应该找到它...但是如何? 也许你在你的项目中找不到像我这样的执行者...... (我遇到了同样的问题,我很困惑,因为我的项目 POM 中没有定义强制插件,所以我找不到它。

enforcer 插件在您的 “有效 pom” 中,您应该检查一下。 Effective pom是由超级pom+项目pom组成的配置文件。 maven 使用这个配置文件来执行相关的目标。它帮助开发人员在他/她的 pom.xml 中指定最少的配置细节。尽管可以轻松覆盖配置。

为了展示你的有效 pom,有两种方法: 1-使用maven命令,运行这个命令:

 mvn help:effective-pom

2- 使用您的 IDE:在 Maven 窗口中右键单击您的项目节点并选择显示有效 POM(这取决于您的 IDE)。

在你找到你的力量之后,你可以在你的项目中找到它并改变它。 对我来说,我的 有效 POM 有强制插件,它使用 Java 的 requireMavenVersion 规则是 1.8。所以我将我的项目JDK版本更改为1.8,幸运的是问题得到了解决。

我希望这个答案可以帮助到你。

【讨论】:

这个答案对我有帮助,对我来说是版本问题,当我更改版本时它已修复【参考方案3】:

可能有人在强制执行特定的 Maven 版本。

如果您看到以下消息:

[警告] 规则 0: org.apache.maven.plugins.enforcer.RequireMavenVersion 失败并显示消息: 检测到的 Maven 版本:3.5.4 不在允许范围内 [3.5.2,3.5.2]。

然后将您的 maven 安装更改为指定范围内的内容。 在此示例中,仅允许使用版本 3.5.2。

【讨论】:

maven-enforcer-plugin 很奇怪,即使 设置为 ERROR,错误(失败的规则)也会被记录为 [WARNING]【参考方案4】:

我遇到了同样的问题,并通过修复 pom 版本解决了它。下面的命令没有在所有子 pom 上正常运行,导致不同的 pom 版本。 'mvn 版本:设置 -DnewVersion=$NEW_VERSION 版本:提交' 如果有依赖的pom,请检查所有妈妈是否具有相同的版本。

【讨论】:

【参考方案5】:

我遇到这个问题是因为 Java (java) 是 8 版,而 Java 编译器 (javac) 是 11 版。

如果您需要手动切换版本,这对于 Windows 用户来说很常见。

请先检查版本:

java -version
javac -version

如果使用了 IDE,例如 IntelliJ Idea,那么我建议也仔细研究项目设置。也许完全删除IDE生成的文件并重新导入项目是有意义的。

【讨论】:

【参考方案6】:

在做了一些研究后找到了答案。如果您使用 IntelliJ

Go to Settings ---&gt; builds --&gt; Maven --&gt;set the Maven home directory.

【讨论】:

【参考方案7】:

我遇到了这个问题。这是因为使用了 Maven 二进制版本。

我使用的是 maven 3.0.3 版本。并且执行器插件对此并不可靠。因此将 maven 二进制文件更改为最新的 3.6.3。问题得到了解决,效果很好。

【讨论】:

【参考方案8】:

首先转到项目并运行 mvn clean ,如果构建成功则只需检查所需的依赖项是否已下载到您的 .m2 文件夹中,如果依赖项未下载到本地 .m2 文件夹中,则表示任一版本number 不正确,因为该依赖项或工件路径不正确

如果 mvn clean 本身失败,而依赖项存在于您的 .m2 文件夹中,则意味着 yoru settings.xml 文件实际上已损坏

【讨论】:

【参考方案9】:

这对我有用。

mvn clean
mvn clean install

【讨论】:

【参考方案10】:

您可能应该检查您是否在某个地方有两个不同版本的同一工件。当我想添加新的 maven 依赖项而我已经将它添加到具有不同版本的不同依赖项项目中时,我遇到了它。

【讨论】:

【参考方案11】:

你应该解决问题的根本原因,你的一些依赖,mvn/java版本之间的冲突,有很多可能的原因。

您可以运行mvn dependency:tree 并检查列表中是否可能存在来自不同包的同一库的 2 个不同版本或实现。通常你会在框架中的某个地方有一个父 pom 或依赖项,它与你添加到 pom 中的不兼容。

但通常情况下,尽管存在此强制错误,您的项目仍可以完美构建和运行,因此这是构建忽略错误的解决方法

跳过强制执行器(并不总是有效)

mvn clean install -Denforcer.skip=true

如果出错则继续构建

mvn clean install -Denforcer.fail=false

可能还有一些方法可以将特定库从强制执行规则中排除,这可能比跳过所有内容更好。

【讨论】:

【参考方案12】:

检查您的 maven 版本,例如,如果您正在安装 Apache-CXF 3.6 而您的 maven 版本是 3.0.5,则会出现错误。如果你安装的是 Apache-CXF 3.6,maven 的最低版本必须是 3.1,Java 的最低版本必须是 8。

【讨论】:

【参考方案13】:

这个错误很可能是由于pom文件中指定的java版本和你系统中的java不匹配造成的。我的系统中安装了 Java 16,但 pom 指向的是 Java 版本 8。

有两种方法可以解决这个问题:

    将pom文件中的java版本更新为PC上安装的java版本,但这可能会导致很多依赖问题。 卸载系统中安装的java,重新安装pom文件中指定的java版本。您可以按照以下步骤执行此操作:

使用以下命令检查系统中的 java 版本:

java -version

然后检查你的 pom 文件中定义的 java 版本。应该是这样的

<project.java.version>1.8</project.java.version>

安装 JDK 8。

【讨论】:

以上是关于未能执行目标 org.apache.maven.plugins:maven-enforcer-plugin的主要内容,如果未能解决你的问题,请参考以下文章

未能在 GitLab CI 管道中执行目标

Spring Roo 项目。项目构建错误:未能执行目标

未能执行目标... maven-install-plugin ... 无法安装工件...(访问被拒绝)

未能执行目标 org.apache.maven.plugins:maven-enforcer-plugin

未能执行目标 maven-antrun-plugin - GitHub 操作上的连接超时

未能执行目标 org.apache.maven.plugins:maven-resources-plugin:2.5:resources