Maven依赖通过和冲突,继承和聚集

日期: 2025-02-23 12:11:15 |浏览: 92|编号: 75574

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

Maven依赖通过和冲突,继承和聚集

1。依赖性交付和冲突1.1 Maven依赖交付功能1.1.1概念

如果有三个Maven项目A,B和C,其中A项目取决于B和B和 b和取决于C。我们可以说A依赖于C。 C当我们执行项目A时,我们将自动下载B和C到项目A的JAR软件包文件夹中。这是依赖性的传统。

1.1.2功能

1。简化依赖关系导入过程

2.确保依赖性版本正确

1.1.3传输原则

在以下前提是a取决于b和b的取决于c,是否可以将c传递到a,取决于依赖关系范围和b依赖于C时使用的配置。

1。B取决于C的使用范围:可以通过

2。B使用测试或范围在无法传递C:无法传递时,因此,当需要这样的JAR包装时,您必须在需要的情况下清楚地配置依赖项。

3。当B取决于C时,如果配置了以下标签,则无法传递。


    com.alibaba
    druid
    1.2.15
    
    true

1.1.4依赖性交付中止

1。依赖性交付是在非范围内进行的

2。使用配置终止交付

3。依赖性冲突(已传播依赖关系已经存在)

1.1.5案例

例如,当我们使用它时,我们需要导入以下三个依赖项。


    com.fasterxml.jackson.core
    jackson-databind
    2.14.2


    com.fasterxml.jackson.core
    jackson-core
    2.14.2


    com.fasterxml.jackson.core
    jackson-annotations
    2.14.2

但是,根据依赖性传播关系,其他两个依赖关系取决于,也就是说,只需要一个,如下图所示:

1.2 Maven依赖冲突特征1.2.1依赖性冲突简介

当相同的JAR软件包直接或间接出现时,将出现在项目中的相同重复的JAR软件包,这被认为是冲突。如下图所示:

Maven具有自动解决依赖性冲突问题的能力,并将根据自己的原则进行重复的依赖选择。它还提供了一种手动解决冲突的方法。

1.2.2自动选择1.2.2.1短路优先级(第一原理)

下面的第二个路径很短(依赖关系水平很小),因此a将取决于x(0.0.2)

1。a - > b - > c - > d - > e - > x(0.0.1)

2。a - > f - > x(0.0.2)

1.2.2.2声明优先级第一(第二个原理)

如果依赖关系路径长度相同,那么首先声明的人是优先级。也就是说,在项目A的POM中,如果首先声明E,则X依赖于(0.0.1)。如果首先声明f,则x依赖于(0.0.2)版本。

1。A - > e—> x(0.0.1)

2。a —> f-> x(0.0.2)

1.2.3手动排除

您可以将标签添加到标签中以排除依赖项,如下所示:


  com.maven
  pro01-maven-java
  1.0-SNAPSHOT
  compile
  
  
	
	
	  
	  commons-logging
	  commons-logging
	
  

2。继承与聚合2.1 Maven项目继承关系2.1.1继承概念

Maven继承是指一个项目从Maven项目中的另一个项目继承配置信息的机制。继承使我们能够在多个项目中共享相同的配置信息,从而简化项目管理和维护。

2.1.2继承

在父项目中统一地管理项目中的依赖性信息。

2.1.3背景

1。一个相对较大的项目被模块化。

2。一个下面创建了许多。

3。每个人都需要配置自己的依赖性信息。

2.1.4要求

1。很容易引起每个依赖性信息,并且以统一的方式管理不容易管理。

2。在同一框架内使用不同的JAR软件包,它们应该是同一版本,因此整个项目中使用的框架版本需要统一。

3。需要长时间探索和调试使用框架时所需的JAR软件包组合(或相关信息组合)才能最终确定可用组合。该计划已付出了巨大的努力,不应在新项目中再次探讨。

4。通过维护父项目中整个项目的依赖信息的组合,整个项目不仅可以确保标准化和准确的JAR包装;它还可以积累过去的经验并节省时间和精力。

2.1.5继承语法

pom.xml在父项目中的内容如下:

com.maven
maven-parent
1.0-SNAPSHOT
pom

poM.xml在子标记中的含量如下:



  
  com.maven
  maven-parent
  1.0-SNAPSHOT

maven-module

2.1.6案例

首先创建一个maven模块作为父项目,如下所示:

此SRC目录是没有用的,因为它只是一个父项目,不会在内部编写代码,因此可以删除。最终效果如下:

maven-pom.xml的内容如下:



    4.0.0
    com.maven
    maven-parent
    1.0-SNAPSHOT
    
        8
        8
        UTF-8
    

右键单击maven模块,并创建一个子项目Maven-son,如下图所示:

该项目的整体结构如下图所示:

maven-son的pom.xml的内容如下:



    4.0.0
    
    
        com.maven
        maven-parent
        1.0-SNAPSHOT
    
    maven-son
    
        8
        8
        UTF-8
    

目前,成功创建了一个卑鄙的父子项目。

2.1。标签

如果子项目想要完全继承父项目的Maven依赖关系,那么您只需要使用标签即可在父项目中添加依赖项,如下图所示,遗传依赖关系的关系不受标签中的属性。

儿童项目不需要在pom.xml中配置任何依赖项即可享受父项目的所有依赖关系。

2.1.T标签

通常,家长项目具有更多的依赖性。如果儿童项目不需要依靠所有项目,而只依靠其中一些,那么您需要使用标签。

首先,使用Maven项目中的标签来管理依赖项,如下所示:



    4.0.0
    com.maven
    maven-parent
    1.0-SNAPSHOT
    pom
    
        maven-son
    
    
        8
        8
        UTF-8
    
    
        
            
                com.fasterxml.jackson.core
                jackson-databind
                2.14.2
            
            
                org.projectlombok
                lombok
                1.16.20
                provided
            
            
                org.junit.jupiter
                junit-jupiter-api
                5.9.2
                test
            
        
    

一旦父项目使用标签,Maven-son项目的依赖性变为0,如下图所示

目前,您需要在Maven-son项目中指定所需的依赖关系。如下图所示,您不需要编写版本编号,您只需要编写前两个坐标,并配置Maven-SON的依赖性,如下图所示:



    4.0.0
    
        com.maven
        maven-parent
        1.0-SNAPSHOT
    
    maven-son
    
        8
        8
        UTF-8
    
    
        
            com.fasterxml.jackson.core
            jackson-databind
        
    

您可以看到所需的依赖性出现,如下图所示

2.2 Maven工程聚合关系2.2.1聚合概念

Maven聚合是指将多个项目组织成要合并和管理的父项目的机制。汇总可以帮助我们更好地管理一组相关的子项目,同时简化其构建和部署过程。

2.2.2合作社

1。管理多个子项目。通过汇总,可以一起组织多个子项目,以方便管理和维护。

2。构建并发布一组相关项目。通过汇总,可以在一个命令中构建和发布多个相关项目,从而简化部署和维护工作。

3。优化构造序列。通过汇总,可以依次控制多个项目,以避免施工依赖性混乱导致施工失败的情况。

4。依赖关系的统一管理。通过汇总,可以在父项目中管理公共依赖性和插件,以避免重复定义。

2.2.3聚合语法

父母项目中包含的子项目列表。如下所示,主要是标签。



    4.0.0
    com.maven
    maven-parent
    1.0-SNAPSHOT
    pom
    
        
        maven-son
    
    
        8
        8
        UTF-8
    
   

2.2.4聚合演示

让我们构建一个maven项目,看看它是否可以自动构建其 maven-son,如下所示:

提醒:请联系我时一定说明是从旅游网上看到的!