精华内容
下载资源
问答
  • Maven的传递性依赖

    2017-06-20 15:34:47
    传递性依赖考虑一个基于Spring Framework的项目,如果不使用maven,那么在项目中就需要手动下载相关依赖。由于Spring Framework又会依赖于其他开源类库,因此实际中往往会下载一些很大的包,包含Spring Framework的...

    传递性依赖

    考虑一个基于Spring Framework的项目,如果不使用maven,那么在项目中就需要手动下载相关依赖。由于Spring Framework又会依赖于其他开源类库,因此实际中往往会下载一些很大的包,包含Spring Framework的jar包,以及所有依赖他的其他jar包,这样做往往会引入很多不必要的依赖包。或者还可能会造成很多错误信息,这是一个非常麻烦的事情。

    Maven的传递机制会好的解决了这个问题,有了传递机制,在使用Spring Framework的时候就不用去考虑它依赖了什么,也不用考虑担心引入多余的依赖。Maven会解析各个直接依赖的POM,讲那些必要的间接依赖,以及传递性依赖的形式引入当前项目中。

    传递性依赖和依赖范围

    假设A依赖于B,B依赖于C,我们说A对于B是第一直接依赖,B对于C是第二直接依赖,A对C是传递性依赖。第一直接依赖的范围和第二直接依赖的范围决定了传递依赖的范围。如下图所示,最左边一行表示第一直接依赖范围,最上面一行表示第二直接依赖范围。中间交叉的单元格则表示传递依赖的范围。

    这里写图片描述

    规律:当第二依赖的范围是compile的时候,传递依赖的范围与第一直接依赖的范围一致;当第二直接依赖的范围是test的时候,依赖不会得以传递;当第二直接以来的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为provided;当第二直接依赖的范围为runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递性依赖的范围为runtime。

    展开全文
  • Maven 如何处理传递性依赖

    千次阅读 2015-07-16 17:57:24
    maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖。但有时候,当传递性依赖造成问题的时候,...

    maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖。但有时候,当传递性依赖造成问题的时候,我们就需要清楚地知道该传递性依赖是从哪条依赖路径引入的。

     

    例如,项目A有这样的依赖关系 : A-->B-->C-->X(1.0)、A-->D-->X(2.0),X是A的传递性依赖,但是两条依赖路径上有两个版 本的X,那么哪个X会被maven解析使用呢?两个版本都被解析显然是不对的,因为那会造成依赖重复,因此必须选择一个。maven依赖调解的第一原则:路径最近者优先。该例中X(1.0)的路径长度为3,而X(2.0)的路径长度为2,因此X(2.0)会被解析使用。

     

    依赖调解第一原则不能解决所有问题,比如这样的依赖关系:A-->B-->Y(1.0),A-->C-->Y(2.0),Y(1.0)和Y(2.0)的依赖路径长度是一样的,都为2。那么到底谁会被解析使用呢?在maven2.0.8及之前的版本中,这是不确定的,但是maven2.0.9开始,为了尽可能避免构建的不确定性,maven定义了依赖调解的第二原则:第一声明者优先。在依赖路径长度相等的前提下,在POM中依赖声明的顺序决定了谁会被解析使用。顺序最靠前的那个依赖优胜。

    展开全文
  • Maven-04传递性依赖和依赖范围

    千次阅读 2011-08-23 23:06:55
    依赖范围影响传递性依赖 (左边第一行标示第一直接依赖范围, 对上面第一行标示第二直接依赖范围, 中间的交叉单元格标示传递性依赖范围)   compile test provided runtime compile ...

    依赖范围影响传递性依赖

    (左边第一行标示第一直接依赖范围,

    对上面第一行标示第二直接依赖范围,

    中间的交叉单元格标示传递性依赖范围)

      compile test provided runtime

    compile

    compile

    ---

    ---

    runtime

    test

    test

    ---

    ---

    test

    provided

    provided

    ---

    provided

    provided

    runtime

    runtime

    ---

    ---

    runtime

    • 当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
    • 当第二直接依赖的范围是test的时候,依赖不会得以传递。
    • 当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided;
    • 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime; 
    展开全文
  • 精通组件兼容性依赖

    千次阅读 2014-10-28 15:08:02
    精通组件兼容性依赖>>,这篇文章首先从Java语言层面阐述了什么是兼容性,JDK是如何处理兼容性的?然后提出了一个最佳实践路线图,首先要保证你的组件包是面向接口编程的,别人可以稳定地依赖你的接口,而实现可以...

           <<精通组件兼容性依赖>>,这篇文章首先从Java语言层面阐述了什么是兼容性,JDK是如何处理兼容性的?然后提出了一个最佳实践路线图,首先要保证你的组件包是面向接口编程的,别人可以稳定地依赖你的接口,而实现可以采用动态发现的机制去做。并用SLF4j和Maven Dependency插件作为推荐准则,讲解了它们的源码实现,顺便引出了臭名昭著的commons logging的ClassLoader问题,感兴趣的同学可以顺藤摸瓜,一探究竟。其次介绍了组件签名&兼容性保护策略,使用开源已有工具可以轻松帮助我们解决这类问题。最后,也是重中之重,介绍了Dependency Mediator项目的初衷,和OSGI等模块化思路不同,它试图通过编译期检查而不是运行期隔离的方式,为我们降解三类常见运行期错误:NoSuchMethodError,NoSuchFieldError 和 NoClassDefFoundError。项目目前已经发布了1.0版本,而在2.0版本中,会有重量级的优化和功能,希望大家多多使用。

            当然,文章比较长,大家如果能耐心通读,势必会对兼容性依赖这个领域有更深刻的认识,也欢迎大家积极在Issue上提需求和BUG,好的产品离不开大家的帮助!


    文章地址:Mastering Component Compatible Dependency

    项目地址:dependency-mediator

    展开全文
  • maven3实战之坐标和依赖(传递性依赖) ----------   1.何为传递性依赖 假如有一个account-email项目,该项目有一个org.springframework:spring-core:2.5.6的依赖,而实际上spring-core也有它自己的依赖...
  • Maven坐标和依赖(传递性依赖) ----------   1.何为传递性依赖 假如有一个account-email项目,该项目有一个org.springframework:spring-core:2.5.6的依赖,而实际上spring-core也有它自己的依赖,我们可以直接...
  • maven 依赖范围影响传递性依赖

    千次阅读 2020-02-10 00:39:46
    compile test provided runtime compile compile N N runtime test test N N ...中间交叉的单元格表示传递性依赖范围  
  • 任务(活动)之间的排序依据主要有:强制性依赖关系、软逻辑关系、外部依赖关系。 项目各项任务(活动)之间存在相互联系与相互依赖关系,根据这些关系安排各项活动的先后顺序。确定任务(活动)之间关联关系的依据...
  • Maven的依赖范围在pom.xml文件中,有个元素是scope,用来表示依赖的范围。之所以会有依赖范围,是因为Maven在编译、测试和运行项目时会各自使用一套classpath,依赖范围就是用来控制这三种classpath的。简单来说,...
  • Maven传递性依赖解读

    千次阅读 2018-11-01 15:41:23
    dependencyManagement统一管理项目的版本号,只声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。在子项目中写了该依赖项,并且没有指定具体版本,会自动从父项目中继承该项,并且version和scope都...
  • maven依赖性具有传递:A.jar -> B.jar -> C.jar (当且仅当B.jar -> C.jar 的范围是compile(<scope>compile</scope>)) 程序示例: if(A.jar 依赖 B.jar){ if(B.jar 依赖 C.jar &&...
  • maven卸载强制性依赖

    千次阅读 2015-10-24 16:27:17
    maven去强制依赖
  • Maven的传递性依赖及其jar包冲突解决

    万次阅读 2016-11-03 11:47:32
    一、Maven简介 ...作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。 二、Maven的依赖管理 1、依赖配置 基本配置: ... ... ...
  • [Maven实战](9)传递性依赖

    千次阅读 2016-01-30 22:26:04
    了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包。如果不使用Maven,那么在项目中就需要手动下载相关的依赖。由于Spring Framework又会依赖与其他开源类库,因此实际中往往会下载...
  •  当我在service模块引入公司某业务的一个接口,由于该接口依赖了公司写的各种东西和spring等第三方依赖,所以我一下子啥都不用显示依赖了,这叫传递。而dependencyManagement的作用在于仍然让子模块显示写依赖,...
  • 摘要:  不要过分依赖:人如果用前向盛名能够实现,那么就不要用包含(#include)定义。  不要互相依赖:循环依赖是...因此,循环依赖有碍于模块,是大型项目的祸根。请避免循环依赖。  除非确实需要类型定义,否
  • 本节介绍Maven中的可选依赖和依赖性排除功能。...如果其他 project 依赖了 使用 optional 的 project, 则他们需要自主选择该依赖,亦即是说,该 optional 依赖不会通过传递性依赖传递给上层的 project。 为什么...
  • JavaEE中的依赖性——依赖性注入

    千次阅读 2015-01-31 23:01:36
    当一个资源注解防止在一个字段或setter方法之上时,将会发生两件事。...自动超找一个资源并将它设置到类中的过程称之为依赖性注入(dependency injection)因为据说服务器将把解析的依赖性注入类中。
  • 排除依赖传递性依赖会给项目隐式地引入很多依赖,着极大简化了项目依赖的管理,但是有些时候这种特性也会带来问题。例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,...
  • Maven依赖调解和可选依赖

    千次阅读 2017-06-20 16:45:05
    Maven依赖调解Maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖。但有时候,当传递性依赖造成...
  • JavaEE中的依赖性——依赖查找

    千次阅读 2015-01-31 22:23:14
    关于依赖性管理我们要介绍的第一个策略就是依赖查找(dependency lookup)。这种策略是JavaEE中传统形式的依赖性管理,这里可以看到JavaEE规范中的JNDI(Java Naming andDirectoryInterface)的身影。从名字就可以看...
  • JavaEE中的依赖性——声明依赖性

    千次阅读 2015-01-31 23:05:29
    每条注解有一个可选的name特性以指定依赖性的引用名称。注解的其他特性特定于所需获取的资源类型。引用持久化上下文前面的章节演示了如何通过从Persistence类返回一个EntityManagerFactory,为持久化上下文创建一个...
  • 例如, 当前一个项目有一个第三方依赖, 而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时候就需要...
  • MAVEN-依赖传递

    千次阅读 2019-02-28 07:26:01
    依赖传递 在项目往往需要引入多个依赖, 而引入的依赖又会引入其他的依赖。 例如: 项目中引入了spring-core依赖, 而spring-core又依赖commons-logging。因为项目直接引入了spring-core依赖,则spring-core为...
  • pgsql依赖性追踪

    千次阅读 2014-06-05 11:01:22
    PostgreSQL 8.1 中文文档 Prev Fast Backward Chapter 5....5.11. 依赖性追踪 ...如果你创建了一个包含许多表,并且...那么你就会在对象 之间隐含地创建了一个依赖性的网络。比如,一个带有外键 约束的表依赖于它引用
  • Maven中使用scope来指定当前包的依赖范围和依赖的传递。常见的可选值有:compile,provided,runtime,test,system等。scope主要是用在pom.xml文件中的依赖定义部分 <dependency> <groupId>mysql</...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,498
精华内容 24,999
关键字:

性依赖