当我需要使用父模块
指定子模块依赖项时,我遇到了多模块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中的依赖项添加到父包中我应该如何解决这个问题?
答案 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中的依赖项添加到父包中 父包上可用的一些类
您无需将其指定为实现它的依赖项 子项目从父项目中继承了许多内容,包括依赖项。