Maven sagt, ich habe ein zyklischer Verweis in multi-Modul-Projekt, aber kann nicht herausfinden, warum
Ich habe ein multi-module-Projekts, die wie folgt aussieht:
- module1
- pom.xml
- "Modul2"
- pom.xml
- pom.xml
Den pom.xml in "Modul2" hat eine Abhängigkeit auf das Modul module1.
Wenn ich mvn clean compile bekomme ich folgende Fehlermeldung:
Projekte im Reaktor enthalten, der eine zyklische Referenz.
Hier sind meine Abhängigkeiten in module1:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.48</version>
</dependency>
</dependencies>
Ich kann nicht herausfinden, warum es sagt, es ist eine zyklische Referenz. Auch wenn ich mvn dependency:tree auf "module1", bekomme ich die folgende:
[INFO] +- log4j:log4j:jar:1.2.14:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.1:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] +- com.jcraft:jsch:jar:0.1.48:compile
[INFO] \- junit:junit:jar:4.8.2:test
Es sieht für mich so aus, es gibt keine Verweise auf Modul2 in Modul1. Also, wo ist die zyklische Referenz aus?
Edit: Hier der log mit debug auf:
+ Error stacktraces are turned on.
Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.6.0_31
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='com.myorg:module2'}' and 'Vertex{label='com.myorg:module1'}' introduces to cycle in the graph com.myorg:module1 --> com.myorg:module2 --> com.myorg:module1
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.BuildFailureException: The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='com.myorg:module2'}' and 'Vertex{label='com.myorg:module1'}' introduces to cycle in the graph com.myorg:module1 --> com.myorg:module2 --> com.myorg:module1
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:295)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: hidden.org.codehaus.plexus.util.dag.CycleDetectedException: Edge between 'Vertex{label='com.myorg:module2'}' and 'Vertex{label='com.myorg:module1'}' introduces to cycle in the graph com.myorg:module1 --> com.myorg:module2 --> com.myorg:module1
at hidden.org.codehaus.plexus.util.dag.DAG.addEdge(DAG.java:143)
at hidden.org.codehaus.plexus.util.dag.DAG.addEdge(DAG.java:123)
at org.apache.maven.project.ProjectSorter.<init>(ProjectSorter.java:118)
at org.apache.maven.execution.ReactorManager.<init>(ReactorManager.java:99)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:288)
... 11 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 17:21:21 EDT 2012
[INFO] Final Memory: 3M/244M
[INFO] ------------------------------------------------------------------------
Können Sie nach entsprechenden Protokoll läuft im debug-Modus -
Ich habe soeben die post enthalten der log
mvn -X clean compile
?Ich habe soeben die post enthalten der log
InformationsquelleAutor user977208 | 2012-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ah! Es wurde eine irreführende Fehlermeldung.
Das problem war nicht, dass es sowohl Modul1 und Modul2 hing auf jeder anderen. Das problem war, dass "Modul2" ist ein Maven-plugin und in meinem root pom.xml ich hatte das plugin in die Sektion. Ich entfernte das plugin von build-und es begann.
InformationsquelleAutor user977208
Ich mache fast das gleiche, und ich IDEE.
Habe ich ein Projekt Ein, welches abhängig von Modul B.
In der pom-Datei von A, B wurde erklärt, wie eine Abhängigkeit. Das ist OK.
In der pom-Datei von B, A erklärt wurde, als seine Eltern. Entfernt habe ich diese Informationen, und als er aufgefordert wurde, die Fehlermeldung habe ich noch die version Anzahl der B in der pom-Datei.
Und jetzt ist es OK.
InformationsquelleAutor johanvs
Ich hatte genau das gleiche Problem in einem multimodule ear-Projekt. Das ejb-pom hatte eine Abhängigkeit auf das web-Modul (compile-scope) und die web-pom eine Abhängigkeit auf das ejb-Modul. Sobald ich entfernt das ejb-pom Abhängigkeit von der web-Modul, das Projekt zu bauen Ordnung.
Macht es Sinn, dass die intramodule müssen die Abhängigkeiten werden einseitig nach allem, um zu vermeiden Sie zyklische Verweise.
InformationsquelleAutor Grigoreas P.
Passiert es mir in diesen Umständen.
Den module_child_X angegeben wurde 2 mal auf module_root pom.xml:
- Als Modul
- Als Abhängigkeit
Lösung?
Entfernt die module_child_X als Abhängigkeit. Es ist bereits angegeben, als ein Modul.
InformationsquelleAutor tremendows