我有一个webapp,我尝试使用maven编译,不幸的是,它在执行mvn clean package
时无效。 stackoverflow上有很多问题似乎相同,但 none 解决了我的问题。
如果JAVA_HOME +目标和Maven编译插件源的Java版本相同(设置为 1.7 ),我加倍检查。 是。
我尝试升级并降级maven编译插件 但没有成功。
不幸的是,我不能把我的pom.xml放在这里,因为它长了+1500行。
我将新的maven模块(具有firebase作为依赖项)添加到我的produit-webapp后发生此错误。这个模块编译得很好。
通过完整的调试日志记录运行它得到的错误输出:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project produit-webapp: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project produit-webapp: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
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:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
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.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:862)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
... 20 more
答案 0 :(得分:1)
您可能希望查看网络应用的依赖关系(在pom.xml
中)。你声明你的pom.xml很长,我猜它之前正在使用其他模块并且你添加了一个新模块。
如果是这样,您应该尝试删除对新模块的依赖关系。如果它正在编译好,那么,至少,你知道它来自哪里。
要进行进一步调查,在webapp中添加新模块,然后删除新模块中的依赖项。依次添加依赖项以找到导致问题的那个。
一旦找到了罪魁祸首依赖关系,请查看此依赖关系的依赖关系(ctrl + left click
对Eclipse中的依赖关系打开相关的pom.xml
)并执行与以前相同的操作:删除依赖关系并添加他们回来找到造成问题的原因。
如何正确删除依赖项:
您应该使用<exclusion>
标记而不只是注释掉相关性,请参阅this页面了解如何操作。
如果您有很多依赖项,那么可以很长时间地逐个排除模块,因此您可以通过删除其中的一半并查看它是否正在编译来更快地完成。如果它没有编译则意味着罪魁祸首依赖于另一半。尝试编译的另一半。重复此部分的一半,直到找到负责人(有点像 binary search )
此解决方案仅建议查找问题的来源。它会在编译时删除错误,但是您的webapp可能会在 runtime 上引发错误,因为它需要您删除的依赖项!