maven2多模块父pom丢失

时间:2011-08-17 15:59:26

标签: maven-2

这是我在StackOverflow上的第一个问题。到目前为止,已经学到了很多其他Q& A.

问题是关于Maven Multimodule。

以下是我的项目结构:

commons-parent
|--pom.xml
|--commons-module1
   |--pom.xml
   |--core
      |--pom.xml
   |--cli
      |--pom.xml

cli代表命令行界面。

commons-module1是公司内不同项目使用的库。 commons-module1 / core包含仅包装库类的pom。 commons-module1 / cli包含打包命令行测试程序的pom。

commons-parent / pom.xml(相关代码段):

<groupId>com.abc.def</groupId>
<artifactId>commons-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<profile>
    <id>reactor</id>
    <properties>
        <env.type>dev</env.type>
    </properties>
    <modules>
        <module>../commons-module1</module>
    </modules>
</profile>

there is a distribution management section 
but there is no repositories section in pom.

commons-module1 / pom.xml(相关代码段):

<parent>
    <groupId>com.abc.def</groupId>
    <artifactId>commons-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>   

<groupId>com.abc.def</groupId>
<artifactId>commons-module1</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<modules>
    <module>cli</module>
    <module>core</module>
</modules>


there is a distribution management section 
but there is no repositories section in pom.

commons-module1 / core / pom.xml(相关代码段):

<parent>
    <groupId>com.abc.def</groupId>
    <artifactId>commons-module1</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>   

<groupId>com.abc.def</groupId>
<artifactId>commons-module1-core</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>


there is a distribution management section 
but there is no repositories section in pom.

commons-module1 / cli / pom.xml(相关代码段):

<parent>
    <groupId>com.abc.def</groupId>
    <artifactId>commons-module1</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>   

<groupId>com.abc.def</groupId>
<artifactId>commons-module1-cli</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>


there is a distribution management section 
but there is no repositories section in pom.

环境:

 Apache Maven 2.1.0 (r755702; 2009-03-18 19:10:27+0000)
 Java version: 1.6.0_25

问题描述:

当项目需要依赖commons-module1-core时,项目将有一个maven pom中的依赖关系如下:

<dependency>
    <groupId>com.abc.def</groupId>
    <artifactId>commons-module1-core</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

这仅在完整层次结构时起作用(即满足依赖性) commons-parent,commons-module1,commons-module1-core这三个都在本地存储库中。 如果我在本地失踪了它们,它就无法工作。我们有nexus存储库管理器 建立。所以,我的期望是,该项目利用了commons-module1-core库 可以在他们的pom中通过传递依赖声明上面的依赖片段 分辨率,得到父母poms。

我在这里错过了什么吗?

修改

对于一个我认为与我的问题类似的更简单的用例 - 请参阅这个未回答的问题:

Child not finding parent pom in flat structured multi module maven build

1 个答案:

答案 0 :(得分:0)

首先,尽快更新到Maven 3.0.3 ... 2.1.0有很多错误,不会再被删除了。 其次,你在滥用你总是写的pom的某些部分:

<parent>
    <groupId>com.abc.def</groupId>
    <artifactId>commons-module1</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>   

<groupId>com.abc.def</groupId>
<artifactId>commons-module1-core</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>

但你应该这样做:

<parent>
    <groupId>com.abc.def</groupId>
    <artifactId>commons-module1</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>   

<artifactId>commons-module1-core</artifactId>
<packaging>jar</packaging>