【发布时间】:2016-10-19 05:50:18
【问题描述】:
所以我有一个问题,那就是 - Maven 似乎忽略了依赖关系,即使它们应该在层次结构中可见。
我有以下项目层次结构:
父母
--projA
--sub-parent1
----项目B
----项目
所有级别都通过<parent> 标签链接。
sub-parent1 将 projB 和 projC 声明为模块,但未声明任何依赖项。但是projB 依赖于projA。并且构建整个sub-parent1 模块不会构建projA,这很奇怪,因为projB 知道sub-parent1,而sub-parent1 知道parent,它知道依赖关系(projA)。但是 maven 不会在我构建整个 sub-parent1 或例如 -pl projB -am clean install 时构建它。
任何帮助表示赞赏。
编辑: 我创建了一个结构,代表这个结构。尝试构建子父:dropmefiles.com/5l42j
编辑: 父pom:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>projA</module>
<module>sub-parent1</module>
</modules>
</project>
项目:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>test</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>projA</artifactId>
<version>1.0</version>
</project>
子父级1:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>test</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
</parent>
<artifactId>sub-parent1</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>projB</module>
</modules>
</project>
项目B:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>test</groupId>
<artifactId>sub-parent1</artifactId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>projB</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>projA</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
编辑: 虽然我有与Maven multi module project cannot find sibling module 相同的解决方案 - 这个问题是不同的,因为它不仅涉及多模块,而且涉及多级(几级模块)项目,并且那里的人也没有明确告诉 maven 建立依赖关系。
解决方案: 所以似乎唯一的解决方案是 - 从最上层的 pom 构建这样的多级结构,在我的情况下,它将是父级(所以父级是当前目录)和地址模块,您需要通过父级的相对路径构建。结果是:
mvn -pl sub-parent1/projB -am clean install
顺序是:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB
【问题讨论】:
-
你能发布你所有的 POM 吗?可能是版本不匹配?
-
@Tunaki 在这里,我创建了一个结构,代表这个结构。尝试构建子父:dropmefiles.com/5l42j
-
@Tunaki 添加了 poms
-
你应该从
parent而不是sub-parent1开始构建,另见stackoverflow.com/a/33131999/1743880
标签: maven maven-reactor