maven2提供了强大的依赖传递管理。
传递依赖的意思简单的理解为A->B-C,则在A的pom中不必声明对C的依赖,maven会自动进行依赖传递。
当依赖传递有环时为错误。
传递依赖是没有数量限制的,所以其依赖的pom数量会急剧增大。所以有以下功能来调整。
依赖调停:
当有多个artifact出现在依赖传递中时,决定用哪个版本。maven2支持最近定义,如A->B->C- D1,A->E->D2,则D2胜。如果深度相等,则2.0.8以前无定义谁胜,2.0.9以后先声明者胜。当然,也可以明确直接定义在A中来解决问题。
依赖管理:
将要依赖的artifact直接声明在当前pom文件中。
依赖范围:
决定不同的stage的依赖关系。
排除依赖:
X->Y-Z,X可以在exclusion元素中声明不依赖Z.
默认排除:
Y->Z,X->Y,Y可以设置对Z的依赖为optional依赖,这样X就对Z没有依赖了。
6种依赖的scope,compile,provided,runtime,test,system,import。
note:判断依赖引用用的是{groupId, artifactId, type, classifier},一般情况下 type默认为jar可以不写。
note:依赖管理和依赖是不同的。依赖管理为<dependencyManagement>,依赖为<dependencies>,可以用<dependencyManagement>来管理jar包的版本号。
注意这里有可能导致混乱,当前pom,父pom,依赖传递的pom中都有可能同时声明<dependencyManagement> 和<dependencies>来指定版本号。优先级的规则尽量不要记,好的实践是用总的祖先pom 用<dependencyManagement>管理版本号,除了这个地方,其他地方不设定版本号。
当前的依赖管理优先于父pom的依赖管理。
依赖管理优先于依赖调停。
查看项目依赖
命令: mvn dependency:analyze
列出项目中所有的直接和传递性依赖。
命令: mvn dependency:tree
分享到:
相关推荐
Maven依赖管理遵循“传递性”原则,即如果你的项目依赖A库,而A库又依赖B库,Maven会自动将B库也一并引入。这大大简化了项目的构建过程,但同时也可能导致依赖冲突,需要通过排除机制或调整依赖版本来解决。 在`...
六、Maven依赖传递和依赖冲突 1. Maven依赖传递特性 Maven会自动处理项目的依赖及其依赖的依赖,称为依赖传递。 2. Maven依赖冲突特性 当不同依赖引入了相同但不同版本的库时,会产生依赖冲突。Maven遵循“nearest ...
Maven依赖库是开发Java应用程序时不可或缺的资源,它包含了各种常用的jar包,这些包提供了丰富的功能,涵盖了数据处理、网络通信、XML解析等多个领域。在本文中,我们将深入探讨maven_repository.zip压缩包中的几个...
依赖范围(scope)是Maven依赖管理的一个重要概念。scope定义了依赖项的使用范围,主要有以下几个选项:compile、provided、runtime和test。compile表示依赖项在编译时需要,provided表示依赖项在编译和测试时需要,但...
【Maven的依赖验证项目】是一个关于Maven项目管理和依赖管理的实践案例,它与CSDN博主songdeitao的一篇文章《Maven依赖管理详解》相关联。在这个项目中,我们将深入理解Maven如何处理项目的依赖关系,以及如何有效地...
以下是ojdbc8的Maven依赖配置示例: ```xml <groupId>com.oracle.ojdbc</groupId> <artifactId>ojdbc8 <version>19.7.0.0 <scope>compile ``` 这里,`groupId`是`com.oracle.ojdbc`,`artifactId`是`...
使用Maven核心概念介绍(坐标、依赖、仓库、插件、生命周期等)、Maven与第三方Elicpse整合及如何在Eclipse中使用Maven、什么是私服、Maven为什么...任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav
综上所述,这个Maven项目配置了一系列关键的依赖库,旨在构建一个功能完善的Web服务客户端。通过对这些依赖的详细了解,可以帮助开发者更好地理解和维护项目,同时也有助于进一步扩展项目功能。
标题"maven依赖包"暗示了我们正在讨论的是Maven如何处理项目的外部依赖。在Java应用开发中,项目通常会依赖许多第三方库,如Spring、Hibernate、Apache Commons等。Maven的中央仓库存储了大量的开源项目JAR包,...
**二、Maven依赖原则** Maven的依赖原则主要为了解决多个依赖之间的版本冲突问题,它遵循两个基本规则: 1. **路径最短优先原则**:当两个不同版本的相同依赖出现在依赖树中,Maven会选择路径较短的那个版本。例如...
Maven依赖管理遵循“传递性”原则,即项目可以直接依赖其他项目,间接依赖也会被自动引入。当出现相同类路径的冲突时,Maven会遵循“第一声明者优先”原则,即先声明的依赖版本优先。 2. **排除依赖(Exclusions)...
#### Maven依赖传递 依赖传递是指当项目依赖某个库时,这个库所依赖的其他库也会被自动加入到项目的构建路径中。例如,spring-webmvc依赖了spring-beans,那么spring-beans也会被加入到项目中。 #### Maven依赖冲突...
### Maven依赖本地JAR包的方法 #### 1. 使用`<systemPath>`标签 Maven提供了`<scope>system</scope>`这一特殊作用域,用于指定本地文件系统上的特定路径,以便在构建过程中引用这些路径下的JAR文件。这种方式要求...
在这个名为"Maven依赖包(用于博客项目)v2"的压缩包中,我们可以推测它包含了为一个博客项目准备的特定Maven依赖库。 Maven依赖管理的核心在于它的`pom.xml`文件,这是一个项目对象模型(Project Object Model)的...
#### Maven依赖传递 依赖传递是指,当项目A依赖于项目B,而项目B又依赖于项目C时,项目A也会间接依赖于项目C。这种传递性可以帮助减少配置的复杂度,但同时也可能导致版本冲突。Maven通过一定的规则来处理这些冲突...
总的来说,解决Maven依赖冲突需要理解其工作原理,结合IDEA提供的工具,如Maven Helper插件和依赖结构图,可以有效地定位和排除冲突,保持项目的稳定性和可维护性。在实际开发中,避免引入不必要的依赖和定期清理...
2. **理解依赖传递性**:Maven会自动处理依赖的依赖,但可能会导致依赖冲突,需要通过 `<exclusions>` 标签排除不需要的子依赖。 3. **管理本地仓库**:定期清理无用的旧版本依赖,避免仓库过大影响性能。 4. **使用...
规则用于处理传递Maven依赖项。 这里的“专家”一词是指“专家工件”,而不是工具“ mvn”。 此仓库利用gradle协助进行传递依赖项管理,因此提供了徽标参考。 规则 名称 描述 加载此仓库的依赖项。 声明一个外部...