Не удалось выполнить цель org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (компиляция по умолчанию) в проекте produit-webapp

У меня есть веб-приложение, которое я пытаюсь скомпилировать с помощью maven, к сожалению, оно не работает при выполнении mvn clean package. В stackoverflow есть МНОГО вопросов, которые кажутся одинаковыми, но ни один не решил мою проблему.

Я дважды проверил соответствует ли версия Java (установлено значение 1.7) для цели JAVA_HOME + и источника плагина компиляции Maven. Да.

Я пытался обновить и понизить версию подключаемого модуля компиляции 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

person Dave Smith    schedule 12.06.2018    source источник


Ответы (1)


Возможно, вы захотите изучить зависимости вашего веб-приложения (в pom.xml). Вы заявили, что ваш pom.xml очень длинный, я предполагаю, что он работал раньше с другими модулями, и вы добавили новый модуль.

Если это так, попробуйте удалить зависимость от нового модуля. Если он компилируется нормально, то, по крайней мере, вы знаете, откуда он взялся.


Для дальнейшего исследования добавьте новый модуль в свое веб-приложение, а затем удалите зависимости внутри нового модуля. Добавляйте обратно одну за другой зависимости, чтобы найти ту, которая вызывает проблему.

После того, как вы нашли виновную зависимость, посмотрите, каковы зависимости этой зависимости (ctrl + left click на зависимости в Eclipse, чтобы открыть связанную pom.xml) и сделайте то же самое, что и раньше: удалите зависимости и добавьте их обратно, чтобы найти причину проблемы.

Как правильно удалить зависимости:

Вы должны использовать тег <exclusion>, а не просто закомментировать зависимость, см. эту страницу о том, как это сделать.

Если у вас много зависимостей, может быть долго исключать модули один за другим, поэтому вы можете сделать это быстрее, удалив половину и посмотреть, компилируется ли он. Если он не компилируется, это означает, что виновная зависимость находится внутри другой половины. Попробуйте с другой половиной, которая должна скомпилироваться. Повторяйте с половиной этой части, пока не найдете ответственного (вроде как в бинарном поиске)


Это решение рекомендуется только для того, чтобы найти источник проблемы. Он устраняет ошибку при компиляции, но ваше веб-приложение может выдать ошибку в runtime, так как ему нужна удаленная вами зависимость!

person VictorGalisson    schedule 14.06.2018
comment
Мой новый модуль компилируется нормально, я получаю [SUCCESS], поэтому не думаю, что это связано с ним. Это мое веб-приложение, которое не компилируется. - person Dave Smith; 14.06.2018
comment
@DaveSmith Это нормально, поскольку ваш новый модуль компилируется один (= только его собственные зависимости). Он не конфликтует с другими модулями, потому что не видит их. При добавлении в веб-приложение эти зависимости могут конфликтовать с другими. - person VictorGalisson; 14.06.2018
comment
о, я вижу, хорошо, я попробую ваше решение - person Dave Smith; 14.06.2018
comment
Оно работает ! Я нашел ошибку, это был конфликт с зависимостью, которая мне даже не нужна. Большое спасибо ! - person Dave Smith; 14.06.2018