Maven的核心笔记(6)maven的传递、冲突、聚合

简介: Maven项目的依赖传递 有三个项目:ABC A | B | C B是依赖A的,C又是依赖B的,所以依赖传递,C也是依赖...
  • Maven项目的依赖传递
    有三个项目:ABC
     A
     | 
     B
     |
     C
    B是依赖A的,C又是依赖B的,所以依赖传递,C也是依赖A的
    A B 项目大成jar包到本地仓库中:
    clean package(打成jar包) install(jar包安装到本地仓库)
    clean compile(编译)

    pom.xml文件中的依赖配置
    B是依赖A的,在B的pom.xml文件中写入A的坐标
    <dependency>
        <groupId>com.A</groupId>
        <artifactId>A-model</artifactId>
        <version>0.0.1-SNAPSNOTL</version>
    </dependency>
    ------------------------------------
    C是依赖B的,在C的pom.xml文件中写入B的坐标
    <dependency>
        <groupId>com.B</groupId>
        <artifactId>B-model</artifactId>
        <version>0.0.1-SNAPSNOTL</version>
    </dependency>

    --A、B、C项目各自打包、编译,在C的项目的Maven dependencies引入中不仅会引入B,而且还会引入A项目,这就是依赖的传递。

    --如果项目C只想依赖B,不想依赖A怎么办?
    排除依赖:exclusions
    <exclusions>
        <exclusion>
            <groupId>com.A</groupId>
            <artifactId>A-model</artifactId>
            <version>0.0.1-SNAPSNOTL</version>
        <exclusion>
    <exclusions>
    这样在C项目编译后compile,就排出对A的依赖

  • Maven依赖冲突
    在传递依赖的原则下,A->B->C->X(jar) 路线1
                        A->D->X(jar) 路线2
    --原则1:短路优先,如果A需要导入一个依赖X,在路径中选择最短的。

    在传递依赖的原则下,A->B->X(jar) 路线1
                     A->C->X(jar) 路线2
    --原则2:在路径相同时,先声明先优先。如果A需要导入一个依赖X,1、2路线相同,在A中的pom.xml先声明B(C),就引入B(C)的X(jar)。
  • Maven项目的聚合
    在D项目中聚合 ABC三个项目
    D的pom.xml文件
    更改<package>pom</package>
    ...
    <modules>
        <module>../模块名</module>
        <module>../模块名</module>
        <module>../模块名</module>
    </moules>
相关文章
|
4月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
66 0
|
Java Maven
【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
4187 0
【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
|
8天前
|
Java 数据库连接 Maven
【Java笔记+踩坑】Maven高级
分模块开发、依赖传递与冲突问题、 可选依赖和排除依赖、聚合和继承、属性、多环境配置与应用、私服安装和使用
【Java笔记+踩坑】Maven高级
|
3月前
|
XML Java 数据库连接
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
76 0
|
4月前
|
Java 项目管理 Maven
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
Maven的聚合和继承是Java开发中重要的概念。聚合允许将多个项目组合成一个构建单元,简化多模块项目的构建过程,提高构建效率。继承则让子项目重用父项目的配置和属性,避免了重复定义,增强了项目的一致性和可维护性。通过聚合和继承,Maven为多模块项目的构建和管理提供了高效且灵活的支持,减少了配置冗余,提升了开发效率。
【揭秘】Maven聚合与继承:如何轻松实现项目依赖管理?
|
4月前
|
Java Maven 开发者
Maven高级-聚合与继承 私服(图文并茂)
Maven高级-聚合与继承 私服(图文并茂)
48 0
|
4月前
|
Java Maven
maven的聚合和继承简析
maven的聚合和继承简析
85 0
|
9月前
|
Java Maven Spring
Maven - 父工程的使用与聚合
Maven - 父工程的使用与聚合
81 2
|
4月前
|
Java Maven
Maven高级-聚合及实施步骤
Maven高级-聚合及实施步骤
57 0
|
4月前
|
前端开发 Java Maven
Maven 插件统一修改聚合工程项目版本号
Maven 插件统一修改聚合工程项目版本号