ไม่สามารถดำเนินการเป้าหมาย org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) บนโปรเจ็กต์ produit-webapp

ฉันมีเว็บแอปที่ฉันพยายามคอมไพล์โดยใช้ maven แต่น่าเสียดายที่มันใช้งานไม่ได้เมื่อทำ mvn clean package มีคำถามมากมายเกี่ยวกับ stackoverflow ที่ดูเหมือนจะเหมือนเดิม แต่ ไม่มี แก้ไขปัญหาของฉันได้

ฉันตรวจสอบซ้ำแล้วซ้ำอีกว่า เวอร์ชันของ Java เหมือนกัน (ตั้งค่าเป็น 1.7) สำหรับ JAVA_HOME + เป้าหมายและแหล่งที่มาของปลั๊กอินการคอมไพล์ Maven มันคือ

ฉันพยายามอัปเกรดและดาวน์เกรดปลั๊กอินการคอมไพล์ Maven ไม่สำเร็จ

น่าเสียดายที่ไม่สามารถใส่ pom.xml ของฉันที่นี่ได้ เนื่องจากมีความยาว +1,500 บรรทัด

ข้อผิดพลาดนี้เกิดขึ้นหลังจากที่ฉันเพิ่มโมดูล 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)


คุณอาจต้องการดู การขึ้นต่อกัน ของ webapp ของคุณ (ใน pom.xml) คุณระบุว่า pom.xml ของคุณยาวมาก ฉันเดาว่ามันใช้งานได้ก่อนหน้านี้กับโมดูลอื่น ๆ และคุณได้เพิ่มโมดูลใหม่

หากเป็นเช่นนั้น คุณควรลองลบการพึ่งพาโมดูลใหม่ออก ถ้ามันคอมไพล์ได้ดี อย่างน้อยคุณก็รู้ว่ามันมาจากไหน


หากต้องการตรวจสอบเพิ่มเติม เพิ่มโมดูลใหม่ในเว็บแอปของคุณ จากนั้นลบการอ้างอิงภายในโมดูลใหม่ เพิ่มการขึ้นต่อกันทีละรายการเพื่อค้นหาสิ่งที่ทำให้เกิดปัญหา

เมื่อคุณพบการขึ้นต่อกันของผู้กระทำผิดแล้ว ให้ดูว่าการขึ้นต่อกันของการขึ้นต่อกันนี้คืออะไร (ctrl + left click การขึ้นต่อกันใน Eclipse เพื่อเปิด pom.xml ที่เกี่ยวข้อง) และทำเช่นเดียวกันกับก่อนหน้านี้ : ลบการขึ้นต่อกันและเพิ่มกลับเข้าไปใหม่เพื่อค้นหาสิ่งที่ทำให้เกิดปัญหา

วิธีลบการอ้างอิงอย่างถูกต้อง :

คุณควรใช้แท็ก <exclusion> และไม่ใช่แค่แสดงความคิดเห็นเกี่ยวกับการพึ่งพา โปรดดูที่ นี้ เพจเกี่ยวกับวิธีการดังกล่าว

หากคุณมีการขึ้นต่อกันจำนวนมาก อาจใช้เวลานานในการแยกโมดูลทีละโมดูล ดังนั้นคุณจึงดำเนินการได้เร็วขึ้นโดยลบครึ่งหนึ่งของโมดูลออกและดูว่ากำลังคอมไพล์อยู่หรือไม่ หากไม่ได้คอมไพล์ก็หมายความว่าการพึ่งพาผู้กระทำผิดอยู่ภายในอีกครึ่งหนึ่ง ลองกับอีกครึ่งหนึ่งซึ่งควรรวบรวม ทำซ้ำครึ่งหนึ่งของส่วนนี้จนกว่าคุณจะพบผู้รับผิดชอบ (เหมือนกับใน การค้นหาแบบไบนารี่)


วิธีแก้ปัญหานี้ แนะนำเท่านั้น เพื่อค้นหาว่าปัญหามาจากไหน จะลบข้อผิดพลาดเมื่อคอมไพล์ แต่ webapp ของคุณอาจมีข้อผิดพลาดใน รันไทม์ เนื่องจากต้องการการพึ่งพาที่คุณลบออก!

person VictorGalisson    schedule 14.06.2018
comment
โมดูลใหม่ของฉันกำลังรวบรวมได้ดี ฉันได้รับ [SUCCESS] ดังนั้นฉันไม่คิดว่ามันเกี่ยวข้องกับมัน มันเป็น webapp ของฉันที่ไม่ได้รวบรวม - 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