`
zhang_xzhi_xjtu
  • 浏览: 536451 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

maven的依赖传递

阅读更多
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依赖小例子

    Maven依赖管理遵循“传递性”原则,即如果你的项目依赖A库,而A库又依赖B库,Maven会自动将B库也一并引入。这大大简化了项目的构建过程,但同时也可能导致依赖冲突,需要通过排除机制或调整依赖版本来解决。 在`...

    Maven依赖管理项目构建工具.pdf

    六、Maven依赖传递和依赖冲突 1. Maven依赖传递特性 Maven会自动处理项目的依赖及其依赖的依赖,称为依赖传递。 2. Maven依赖冲突特性 当不同依赖引入了相同但不同版本的库时,会产生依赖冲突。Maven遵循“nearest ...

    maven依赖库 - maven_repository.zip

    Maven依赖库是开发Java应用程序时不可或缺的资源,它包含了各种常用的jar包,这些包提供了丰富的功能,涵盖了数据处理、网络通信、XML解析等多个领域。在本文中,我们将深入探讨maven_repository.zip压缩包中的几个...

    Maven 依赖详细理解.pdf

    依赖范围(scope)是Maven依赖管理的一个重要概念。scope定义了依赖项的使用范围,主要有以下几个选项:compile、provided、runtime和test。compile表示依赖项在编译时需要,provided表示依赖项在编译和测试时需要,但...

    Maven的依赖验证项目

    【Maven的依赖验证项目】是一个关于Maven项目管理和依赖管理的实践案例,它与CSDN博主songdeitao的一篇文章《Maven依赖管理详解》相关联。在这个项目中,我们将深入理解Maven如何处理项目的依赖关系,以及如何有效地...

    ojdbc8的maven依赖

    以下是ojdbc8的Maven依赖配置示例: ```xml &lt;groupId&gt;com.oracle.ojdbc&lt;/groupId&gt; &lt;artifactId&gt;ojdbc8 &lt;version&gt;19.7.0.0 &lt;scope&gt;compile ``` 这里,`groupId`是`com.oracle.ojdbc`,`artifactId`是`...

    Maven入门巨无霸视频教程(2.24G)

    使用Maven核心概念介绍(坐标、依赖、仓库、插件、生命周期等)、Maven与第三方Elicpse整合及如何在Eclipse中使用Maven、什么是私服、Maven为什么...任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav

    webservices客户端maven依赖

    综上所述,这个Maven项目配置了一系列关键的依赖库,旨在构建一个功能完善的Web服务客户端。通过对这些依赖的详细了解,可以帮助开发者更好地理解和维护项目,同时也有助于进一步扩展项目功能。

    maven依赖包

    标题"maven依赖包"暗示了我们正在讨论的是Maven如何处理项目的外部依赖。在Java应用开发中,项目通常会依赖许多第三方库,如Spring、Hibernate、Apache Commons等。Maven的中央仓库存储了大量的开源项目JAR包,...

    Maven传递依赖和依赖的规则.docx

    **二、Maven依赖原则** Maven的依赖原则主要为了解决多个依赖之间的版本冲突问题,它遵循两个基本规则: 1. **路径最短优先原则**:当两个不同版本的相同依赖出现在依赖树中,Maven会选择路径较短的那个版本。例如...

    ​实现maven项目中多版本依赖兼容使用解决方案

    Maven依赖管理遵循“传递性”原则,即项目可以直接依赖其他项目,间接依赖也会被自动引入。当出现相同类路径的冲突时,Maven会遵循“第一声明者优先”原则,即先声明的依赖版本优先。 2. **排除依赖(Exclusions)...

    day02Maven-教案-实战(IDEA).pdf

    #### Maven依赖传递 依赖传递是指当项目依赖某个库时,这个库所依赖的其他库也会被自动加入到项目的构建路径中。例如,spring-webmvc依赖了spring-beans,那么spring-beans也会被加入到项目中。 #### Maven依赖冲突...

    maven依赖本地jar包

    ### Maven依赖本地JAR包的方法 #### 1. 使用`&lt;systemPath&gt;`标签 Maven提供了`&lt;scope&gt;system&lt;/scope&gt;`这一特殊作用域,用于指定本地文件系统上的特定路径,以便在构建过程中引用这些路径下的JAR文件。这种方式要求...

    Maven依赖包(用于博客项目)

    在这个名为"Maven依赖包(用于博客项目)v2"的压缩包中,我们可以推测它包含了为一个博客项目准备的特定Maven依赖库。 Maven依赖管理的核心在于它的`pom.xml`文件,这是一个项目对象模型(Project Object Model)的...

    maven学习总结

    #### Maven依赖传递 依赖传递是指,当项目A依赖于项目B,而项目B又依赖于项目C时,项目A也会间接依赖于项目C。这种传递性可以帮助减少配置的复杂度,但同时也可能导致版本冲突。Maven通过一定的规则来处理这些冲突...

    试试 IDEA 解决 Maven 依赖冲突的高能神器.docx

    总的来说,解决Maven依赖冲突需要理解其工作原理,结合IDEA提供的工具,如Maven Helper插件和依赖结构图,可以有效地定位和排除冲突,保持项目的稳定性和可维护性。在实际开发中,避免引入不必要的依赖和定期清理...

    apache-maven3.5 依赖包

    2. **理解依赖传递性**:Maven会自动处理依赖的依赖,但可能会导致依赖冲突,需要通过 `&lt;exclusions&gt;` 标签排除不需要的子依赖。 3. **管理本地仓库**:定期清理无用的旧版本依赖,避免仓库过大影响性能。 4. **使用...

    rules_maven:具有Bazel的传递Maven依赖项

    规则用于处理传递Maven依赖项。 这里的“专家”一词是指“专家工件”,而不是工具“ mvn”。 此仓库利用gradle协助进行传递依赖项管理,因此提供了徽标参考。 规则 名称 描述 加载此仓库的依赖项。 声明一个外部...

Global site tag (gtag.js) - Google Analytics