maven多模块项目的最佳方法

时间:2017-08-18 11:57:54

标签: java maven

当我需要使用父模块

指定子模块依赖项时,我遇到了多模块maven项目的问题

这是我对pom.xml的配置

父POM:

<groupId>com.parent</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>childA</module>
    <module>childB</module>
</modules>

childA POM

<parent>
    <groupId>com.parent</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>childA</artifactId>

   <dependencies>
    <dependency>
        <groupId>com.parent</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    </dependencies>

ChildB POM

<parent>
    <groupId>com.parent</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>childB</artifactId>

我在childB中运行mvn clean install时能够构建childB。

构建包含错误消息的Parent和ChildA时出现错误

ERROR] Failed to execute goal on project parent: Could not resolve dependencies for project com.parent:childA:jar:1.0-SNAPSHOT: Could not find artifact com.parent:parent:jar:1.0-SNAPSHOT -> [Help 1]

由于父包

上有一些类,我需要将childA pom.xml中的依赖项添加到父包中

我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

childA pom毫无意义。

它与依赖项父项和构建依赖项具有相同的工件:

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

和:

<dependencies>
  <dependency>
    <groupId>com.parent</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </dependency>
</dependencies>

首先:依赖性解决方案永远不会成功,因为它是鸡和蛋的问题 生成pom的父模块只有在反应堆构建终止时才可用,但只有当childA中的所有模块终止其构建时才会终止它。

第二:多模块maven项目和父模块设计为打包为pom而不是jar
将它声明为childA的依赖关系的兴趣是什么? 只需删除它并将其保留为childA的父级。

  

我需要将childA pom.xml中的依赖项添加到父包中   父包上可用的一些类

您无需将其指定为实现它的依赖项 子项目从父项目中继承了许多内容,包括依赖项。