Maven 分层依赖搜索
Maven hierarchical dependency search
所以我有一个问题,那就是 - Maven 似乎忽略了依赖关系,即使它们在层次结构中应该是可见的。
我有以下项目层次结构:
parent
--projA
--sub-parent1
----projB
----projC
所有级别都通过 <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
.
时构建它
任何帮助表示赞赏。
编辑:
我创建了一个结构,代表这个结构。尝试构建 sub-parent: dropmefiles.com/5l42j
编辑:
parent 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>
sub-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>
项目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 建立依赖关系。
解法:
所以似乎唯一的解决方案是 - 从 upper-most 级 pom 构建这样的多级结构,在我的例子中它将是 parent (所以 parent 是当前目录)和你需要的地址模块通过 parent 的相对路径构建。结果是:
mvn -pl sub-parent1/projB -am clean install
顺序为:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB
所以似乎唯一的解决方案是 - 从 upper-most 级 pom 构建这样的多级结构,在我的例子中它将是 parent (所以 parent 是当前目录)并且您需要通过 parent 的相对路径构建的地址模块。结果是:
mvn -pl sub-parent1/projB -am clean install
顺序为:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB
所以我有一个问题,那就是 - Maven 似乎忽略了依赖关系,即使它们在层次结构中应该是可见的。
我有以下项目层次结构:
parent
--projA
--sub-parent1
----projB
----projC
所有级别都通过 <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
.
时构建它
任何帮助表示赞赏。
编辑: 我创建了一个结构,代表这个结构。尝试构建 sub-parent: dropmefiles.com/5l42j
编辑: parent 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>
sub-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>
项目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 建立依赖关系。
解法: 所以似乎唯一的解决方案是 - 从 upper-most 级 pom 构建这样的多级结构,在我的例子中它将是 parent (所以 parent 是当前目录)和你需要的地址模块通过 parent 的相对路径构建。结果是:
mvn -pl sub-parent1/projB -am clean install
顺序为:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB
所以似乎唯一的解决方案是 - 从 upper-most 级 pom 构建这样的多级结构,在我的例子中它将是 parent (所以 parent 是当前目录)并且您需要通过 parent 的相对路径构建的地址模块。结果是:
mvn -pl sub-parent1/projB -am clean install
顺序为:
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB