我有一个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
答案 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。
有两种方法可以解决这个问题:
使用以下命令检查系统中的 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.
答案 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。