我有一个多模块项目,如下所示:
模块 2 中的 pom.xml依赖于模块 1。
当我运行mvn清洁编译时,我得到以下错误:
Reactor中的项目包含循环参考。
以下是我在模块1中的依赖项:
<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>
我不明白为什么它说有循环引用。即使在模块1上执行mvn依赖:树时,我也会得到以下结果:
[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
在我看来,模块1中没有任何对模块2的引用。那么循环引用从何而来呢?
编辑:以下是调试的日志:
+ 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] ------------------------------------------------------------------------
我做的几乎一样,我使用的是IDEA。
我有一个项目A,它依赖于模块B。在 A 的 pom 文件中,B 被声明为依赖项。这没关系。在 B 的 pom 文件中,A 被声明为其父级。我删除了此信息,并且由于错误消息中请求它,我在其pom文件中添加了B的版本号。
现在没问题了。
在这种情况下发生在我身上。
module_rootpom.xml指定module_child_X2次:
- 作为一个模块
(pom.xml of the root module)
<dependency>
<groupId>module_root</groupId>
<artifactId>module_child_X</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
-作为依赖
(pom.xml of the root module)
<modules>
<module>module_child_X</module>
...
</modules>
溶液?
删除了作为依赖项的module_child_X。它已被指定为模块。
啊!这是一个误导性的错误。
问题不在于模块1和模块2都相互依赖。问题是module2是一个Maven插件,在我的根pom中.xml我在本节中有插件。我从构建中删除了该插件,它开始工作。
/tester.java:3:错误:import java.lang.Math类型的非法启动;^Tester.java:3:错误:应输入java.lang.Math>*;^
我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并
我正在努力练习techniqual测试,我必须计算DNA序列中的字符数,但无论我做什么,计数器都不会更新,这真的很令人沮丧,因为我用ruby学习代码,它会更新,但Java似乎有一个问题。我知道我的语法有问题,但是我怎么也想不出来。 如果满足条件并重新分配值,它只会一直返回零,而不是加一。
反应器中的项目包含循环引用:Vertex{tag='org.spigotmc: spiget-api: 1.8.8-R0.1-SNAPSHOT'}'和'Vertex{tag='org.spigotmc: spigot: 1.8.8-R0.1-SNAPSHOT'}'之间的边缘在图中引入循环org.spigotmc: spigot: 1.8.8-R0.1-SNAPSHOT- “Vertex { lab
我有一个简单的Maven项目,看起来像这个项目视图 有一个主要的pom。xml如下所示: 有两个模块-核心和测试。核心模块pom.xml: 测试模块pom。xml 我想使用核心内部测试的代码。这种依赖性看起来是正确的。该项目已生成,没有错误: 但是,当我在测试中尝试从core导入一个类时,找不到该类。
我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两