无法执行目标org.apache.maven.plugins:maven-enforcer-plugin

时间:2017-07-26 21:14:44

标签: java spring maven netbeans

我有一个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

13 个答案:

答案 0 :(得分:4)

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

enforcer插件位于"有效pom" 中,您应该检查它。 有效pom 是由super pom + project pom制作的配置文件。 maven使用此配置文件来执行相关目标。它可以帮助开发人员在他/她的pom.xml中指定最小配置细节。虽然可以轻松覆盖配置。

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

 mvn help:effective-pom

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

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

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

答案 1 :(得分:2)

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

如果看到以下消息:

  

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

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

答案 2 :(得分:1)

如果您使用1.4.1版本maven-enforcer-plugin并导致此错误,则需要使用旧版本的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

答案 3 :(得分:1)

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

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

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

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

java -version

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

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

安装 JDK 8。

答案 4 :(得分:0)

我遇到了同样的问题,并通过修复pom版本解决了它。以下命令未能在所有子pom上正常运行,这导致了不同的pom版本。 'mvn版本:set -DnewVersion = $ {NEW_VERSION}版本:commit' 如果有依赖的pom,检查所有妈妈的版本是否相同。

答案 5 :(得分:0)

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

对于Windows用户来说,这是典型的情况,如果您需要手动在版本之间进行切换。

请先检查版本:

java -version
javac -version

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

答案 6 :(得分:0)

进行了一些研究之后,找到了答案。如果您使用的是IntelliJ

Go to Settings ---> builds --> Maven -->set the Maven home directory.

enter image description here

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

这对我有用。

mvn clean
mvn clean install

答案 10 :(得分:0)

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

答案 11 :(得分:0)

您应该解决问题的根本原因,某些依赖关系(mvn / java版本)之间存在冲突,可能有很多原因。

但这是一种忽略错误的构建方法

跳过执行程序(并非始终有效)

mvn clean install -Denforcer.skip=true

在出错时继续构建

mvn clean install -Denforcer.fail=false

答案 12 :(得分:0)

检查您的 maven 版本,例如,如果您正在安装 Apache-CXF 3.6 而您的 maven 版本是 3.0.5,那么您会收到错误消息。如果你安装的是Apache-CXF 3.6,maven的最低版本必须是3.1,Java的最低版本必须是8。