所以我有一个问题,那就是 - Maven似乎忽略依赖关系,即使它们应该在层次结构中可见。Maven等级依赖关系搜索
我有以下项目层次:
父
--projA
--sub-parent1
---- projB
---- projC
各级通过<parent>
标签链接。 sub-parent1
已将projB
和projC
声明为模块且未声明相关性。但projB
依赖于projA
。并且构建完整的sub-parent1
模块将不会生成projA
,这很奇怪,因为projB
已知道sub-parent1
而sub-parent1
知道parent
并且它知道依赖关系(projA
)。但是,当我构建完整的sub-parent1
或例如-pl projB -am clean install
时,maven不会构建它。
任何帮助表示赞赏。
编辑︰ 我已经创建了一个结构,代表这个结构。尝试建立子父: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>
projA:
<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>
子parent1:
<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>
projB :
<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相同的解决方案 - 这个问题是不同的,因为它不仅处理multimodule,但与多级(模块的几个层次)项目和人没有明确告诉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
@Tunaki在这里,我创建了一个代表这个结构的结构。尝试构建子父项:http://dropmefiles.com/5l42j – user3177112
@Tunaki添加了poms – user3177112