`
yuanleilei628
  • 浏览: 12763 次
  • 性别: Icon_minigender_1
  • 来自: 河南安阳
社区版块
存档分类
最新评论

maven 中依赖传递 依赖冲突

阅读更多

Maven中依赖是会被传递

     A-->C B-->A ==>B-->C(这种依赖是基于compile这个范围进行传递)

     在dependency配置中如果没有写scope默认就是compile范围,依赖的传递主要是针对compile作用域

     依赖的范围:

         test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖

         compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去

         provided范围指的是在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突

        runtime在运行的时候依赖,在编译的时候不依赖

 


     依赖冲突
     当依赖发生冲突或是希望精确的控制依赖包,可以使用依赖的排除功能——>exclusions来排除

     工程中依赖的相同包不同版本的选择问题:

     1.在工程树上,依赖树的尝试浅者优先。直接依赖的最优先被选择,间接依赖的,树的层次越浅 越被优先选择。

     2.依赖在同一层次上,在前者优先被选择。

     总之就是就近原则。版本冲突时,可使exclusions指定排除的版本。

 

 

另请参考:http://blog.csdn.net/bluishglc/article/details/6584678

 

 

分享到:
评论

相关推荐

    Maven的依赖验证项目

    在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...

    maven依赖小例子

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

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

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

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

    在Java开发中,Maven作为项目管理和构建工具,它的核心概念之一就是依赖管理。Maven通过依赖树确保项目能够正确地引用所需的库和...在实际工作中,应避免直接修改传递依赖,而是通过调整依赖范围和依赖顺序来解决冲突。

    Maven 依赖详细理解.pdf

    为了避免依赖冲突,我们可以在dependency中使用exclusions标签来排除某些不需要的传递性依赖。例如,如果我们不想使用spring-boot-starter-web所依赖的spring-boot-starter-tomcat,我们可以在spring-boot-starter-...

    apache-maven3.5 依赖包

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

    MavenHelper插件 帮你检查maven的各种冲突

    1. **依赖树查看**:MavenHelper提供了一个直观的依赖树视图,列出项目的所有依赖,包括直接依赖和传递依赖。你可以轻松查找特定的依赖并查看其版本信息。 2. **冲突检测**:该插件能自动检测出有版本冲突的依赖,...

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

    依赖冲突源于Maven的传递性依赖和“最近优先”策略。当一个项目间接依赖了不同版本的同一个库时,就会出现冲突。例如,如果项目直接依赖A和B,而A需要C1版本,B需要C2版本,Maven会优先选择路径较短的依赖,即距离...

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

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

    Maven类包冲突终极解决小技若干

    这种依赖传递性导致了类包冲突的可能性——即同一个类库的不同版本在同一项目中出现的情况。 例如,假设项目 A 依赖于项目 B 和 C,而项目 B 又依赖于库 X 的 1.0 版本,项目 C 依赖于库 X 的 2.0 版本。在这种情况...

    maven 关于 scope test 和 继承传递的问题

    首先,`scope test`是Maven依赖管理中的一个关键概念。当我们在`pom.xml`文件中为某个依赖设置`scope`为`test`时,意味着这个依赖只会在单元测试阶段被引入。例如,JUnit或Mockito这样的测试框架通常会被标记为`test...

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

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

    MavenHelper

    "MavenHelper"是一款针对IntelliJ IDEA开发的高效Maven插件,它的主要功能在于帮助开发者快速定位和解决Maven项目中的依赖冲突问题。在Java开发中,Maven作为主流的构建工具,其依赖管理是项目构建的重要环节。然而...

    maven3.5.3最新版

    如果出现版本冲突,Maven的依赖解决策略是“最接近优先”,即优先使用直接依赖中的版本。 除此之外,Maven还支持多模块项目构建,一个父`pom.xml`可以管理多个子模块,方便大型项目管理和构建。同时,Maven插件系统...

    Maven 3.5.0版本资源

    2. **依赖管理**:该版本加强了依赖解析,减少了因为依赖冲突导致的问题。它能更准确地解决传递性依赖,同时提供更好的依赖排除策略。 3. **插件管理**:Maven 3.5.0对插件管理进行了改进,支持更灵活的插件版本...

    maven helper idea 插件

    `Maven Helper`还提供了优化Maven配置的建议,如减少无效的依赖、优化传递依赖等,以提升构建速度。 总的来说,`Maven Helper`是一款强大且实用的IDEA插件,它以直观的方式处理Maven项目中的依赖管理问题,使得...

Global site tag (gtag.js) - Google Analytics