执行目标 org.apache.maven.plugins:maven-dependency-plugin:2.10 失败

13

当尝试安装这个Maven项目时,我遇到了这个错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:analyze-only (analyze-only) on project functional-tests: Dependency problems found -> [Help 1]

它出现在集成测试之后,在验证阶段期间。由于日志中没有提供太多其他信息,因此我几乎无法猜测应该在哪里查找。我尝试使用-X参数运行Maven以进行更深入的检查,但这是唯一出现的错误。在详细日志中出现错误之前,我看到的最后一件事是下面的警告(我怀疑它与错误无关):

[WARNING] Used undeclared dependencies found:
[WARNING]    javax.activation:activation:jar:1.1:test
[WARNING] Unused declared dependencies found:
[WARNING]    org.slf4j:slf4j-log4j12:jar:1.7.6:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.090 s
[INFO] Finished at: 2017-06-28T10:58:54+08:00
[INFO] Final Memory: 60M/1042M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:analyze-only (analyze-only) on project functional-tests: Dependency problems found -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:analyze-only (analyze-only) on project functional-tests: Dependency problems found
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:analyze-only (analyze-only) on project functional-tests: Dependency problems found
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Dependency problems found
    at org.apache.maven.plugin.dependency.analyze.AbstractAnalyzeMojo.execute(AbstractAnalyzeMojo.java:260)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

这个问题可能是什么原因引起的?

更新: 我已经解决了导致上述警告的问题,并且确实有帮助消除错误。现在我只想知道为什么使用未声明的依赖项或声明未使用的依赖项会导致整个构建失败?

更新2: 将slf4j的作用域更改为运行时也解决了问题。


2
“used undeclared dependencies found” 意味着该依赖是传递性的。请在 pom.xml 中声明它。 “Unused declared dependencies found” 意味着该依赖已在 pom.xml 中声明,但未被使用。请从 pom.xml 中删除它。 - Jay Smith
@JaySmith 嗨,谢谢你的评论。是的,我知道这些警告的含义,但我没有想到它们会导致错误并使构建失败。话虽如此,我确实解决了这些警告,并成功完成了构建(请参阅更新)。我真的很想知道为什么看似不重要的警告会导致整个构建失败。 - Eugene S
将生成问题的配置恢复并使用“-e -X”参数运行Maven,它们分别是错误和调试,这样您就可以看到问题的原因。也许是一个潜在的异常? - Jorge Campos
@JorgeCampos 感谢您的评论。我在问题中提到我已经使用了 -X 运行它,错误出现在警告之后。我刚刚在问题中添加了更详细的日志。此外,我刚刚通过将包范围更改为 runtime 而不是默认的 compile 来解决了错误。 - Eugene S
根据提供的链接MojoExecutionException,它是由插件引发的异常,这意味着可能抛出警告的插件可能以虚假的方式通知构建失败。 - Jorge Campos
只需确保配置 <failOnWarning>false</failOnWarning>,如果您不想因警告而失败。这对我有用。 - Naman
3个回答

14

显然,未声明的依赖关系警告我问题的罪魁祸首。在明确地将依赖项添加到pom文件后,问题得到解决。


我的问题更奇怪。本地主干构建失败与我的特性分支相同,但同事的主干却可以工作,并且当他拉取我的特性分支时它也无法通过。我在本地主干/特性分支中添加了一个依赖项,它们都通过了。这是什么鬼。 - neaumusic

10
这是因为:
[WARNING] Used undeclared dependencies found:
[WARNING]    javax.activation:activation:jar:1.1:test
[WARNING] Unused declared dependencies found:
[WARNING]    org.slf4j:slf4j-log4j12:jar:1.7.6:compile

您需要移除org.slf4j:slf4j-log4j12的依赖,并添加javax.activation:activation的依赖。


0

我也是,遇到了同样的问题(在过去几个月中出现了几次),发现通过修复所有警告中的未声明依赖项/未使用声明依赖项可以解决该问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接