如何在maven模块中设置循环引用?

时间:2012-02-06 15:38:01

标签: maven maven-2 maven-3

我在构建maven项目时遇到了这个问题......

mvn项目父级设置如下:

<groupId>com.company.system.ping</groupId>
<artifactId>system-ping</artifactId>
<name>system-ping</name>    
<parent>
    <artifactId>parent_lvl_1</artifactId>
    <groupId>com.company.system</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

然后我找父母的POM找到了这个:

<groupId>com.company.system</groupId>
<artifactId>parent_lvl_1</artifactId>
<packaging>pom</packaging>
<name>_proj_test</name>
<version>1.0-SNAPSHOT</version>
<parent>
    <artifactId>parent_lvl_0</artifactId>
    <groupId>com.company</groupId>
    <version>1</version>
</parent>

我终于看到了第一个父母并看到了这个:

<groupId>com.company</groupId>
<artifactId>parent_lvl_0</artifactId>
<packaging>pom</packaging>
<name>_main</name>
<version>1</version>
<description>The whole Projects</description>

现在我查看模块:

<modules>
    <module>../_proj_test</module>

    ...

</modules>

第一个父模块引用了一个孩子!所以当我尝试

  

mvn install

on'_main'我明白了:

[ERROR]   The project com.company.system:_proj_test:1.0-SNAPSHOT (C:\...\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: The repository system is offline but the artifact com.company:_main:pom:1 is not available in the local repository. and 'parent.relativePath' points at wrong local POM @ line 4, column 10 -> [Help 2]
[ERROR]

我将其翻译为: 您的父母需要一个需要您回复的模块 。如果我在 modules 中注释掉所有内容,我可以正确安装所有内容,但这对我来说不合适!如何在不构建模块依赖项的情况下构建父级?

谢谢!

1 个答案:

答案 0 :(得分:1)

配置看起来很奇怪,主要是因为你的'_proj_test'是'_main'的孩子,位于同一级别。

  

如何在不构建模块依赖项的情况下构建父级?

尝试 mvn -N安装

至于项目结构,我会这样做:

1)带有'_main'pom.xml的$ basedir应该包含这个

<modules>
  <module>_proj_test</module>
</modules>

2)$ basedir / _proj_test和'_proj_test'pom.xml应该包含这个

<modules>
  <module>system-ping</module>
</modules>

3)$ basedir / _proj_test / system-ping与'system-ping'pom.xml(正确 groupId 的父 - com.company.system 而不是 com.company