当前位置: 首页 > 知识库问答 >
问题:

Maven分层依赖搜索

萧献
2023-03-14

所以我有一个问题,那就是--Maven似乎忽略了依赖关系,尽管它们在层次结构中应该是可见的。

我有以下项目层次结构:
父级
--proja
--sub-parent1
---projb
---projc

所有级别都通过 标记链接。sub-parent1projbprojc声明为模块,没有声明依赖项。但是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>
<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>
<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>
mvn -pl sub-parent1/projB -am clean install

顺序将是:

[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB

共有1个答案

谯德元
2023-03-14

因此,似乎唯一的解决方案是--从最上层的pom构建这样的多级结构,在我的例子中,它将是父级(所以父级是当前的dir),您需要根据父级的相对路径构建地址模块。这导致:

mvn -pl sub-parent1/projB -am clean install

顺序将是:

[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] projA
[INFO] sub-parent1
[INFO] projB
 类似资料:
  • 我正在构建一个JavaProject,这是一个项目的插件[加载在我的工作区中,并且是类型jar和范围编译的MaterialsDep的直接依赖项]。在eclipse中查看MaterialsDep的pom依赖层次结构,CB所需的所有jars都显示为已解析并正确列出。然而,在项目AP上运行只复制直接依赖项,而不复制其他内容。 运行依赖关系:树显示: 这是直接的依赖关系。 我应该如何确保的依赖关系被识别和

  • 主要内容:依赖声明,获取依赖坐标Maven 是一款优秀的依赖管理工具,那么什么是依赖呢? 通俗的说,如果一个 Maven 构建所产生的构件(例如 Jar 文件)被其他项目引用,那么该构件就是其他项目的依赖。 依赖声明 Maven 坐标是依赖的前提,所有 Maven 项目必须明确定义自己的坐标,只有这样,它们才可能成为其他项目的依赖。当一个项目的构件成为其他项目的依赖时,该项目的坐标才能体现出它的价值。 当 Maven 项目需要声

  • 我想知道以下jar的所有传递依赖项: 将经典命令移动到pom。项目定义依赖关系和输入的xml: mvn依赖:树 将显示: 我没看到魔咒父母: 乍一看,mvn命令似乎可以显示非pom类型的依赖项。 有没有一种方法可以精确地显示使jar保持活动状态所需的每个文件? 谢谢

  • 主要内容:排除依赖,可选依赖,排除依赖 VS 可选依赖 我们知道 Maven 依赖具有传递性,例如 A 依赖于 B,B 依赖于 C,在不考虑依赖范围等因素的情况下,Maven 会根据依赖传递机制,将间接依赖 C 引入到 A 中。但如果 A 出于某种原因,希望将间接依赖 C 排除,那该怎么办呢?Maven 为用户提供了两种解决方式:排除依赖(Dependency Exclusions)和可选依赖(Optional Dependencies)。 排除依赖

  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

  • 主要内容:依赖传递,依赖范围,依赖范围对传递依赖的影响,依赖调节Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示,项目 A 依赖于项目 B,B 又依赖于项目 C,此时 B 是 A 的直接依赖,C 是 A 的间接依赖。 Maven 的依赖传递机制是指:不管 Maven 项目存在多少间接依赖,POM 中都只需要定义其直接依赖,不必定义任何间接依赖,Mav