maven依赖传递性 -maven依赖继承 -maven依赖排除 -maven依赖原则 -maven构建多模块工程

目录

一、依赖的传递性

二、依赖原则

三、依赖排除

四、举例

五、Tips

六、其它maven相关博客


一、依赖的传递性

  1. 好处:可以传递的依赖(compile范围)不必在每个模块工程中都重复声明,在“最下面”的工程中依赖一次即可。可参考:maven依赖范围
  2. 注意:非compile范围的依赖不能传递。所以在各个工程模块中,如果有需要就得重复声明依赖。

二、依赖原则

  1. 一个工程(可以打成一个jar包或者war的模块)下,只会依赖某个jar包的一个版本,包括依赖传递过来的jar包(也会转化成其中的某一个版本)。
  2. 如果是打成war包,我们可以从war包的lib文件夹里看到,同一个jar包只依赖一个版本。
  3. 如果是打成jar包,该jar包所依赖的其它jar包是不打到这个jar包里面的。
  4. 解决模块工程之间的jar包冲突问题,maven根据自己的内置原则自动处理冲突。
  5. 加载哪个版本jar包的原则
    1. 路径最短者优先原则
    2. 先声明者优先:dependency标签的声明顺序

三、依赖排除

  1. 一个工程依赖某个jar包,可以排除这个jar包依赖的某些jar包,但是并不是说这个工程不需要这个jar包了,而且在其它地方已经依赖了,或者依赖了可以替代的jar包
  2. 依赖排除的设置方式
    <dependency>
    	<groupId>xin.yangshuai.maven</groupId>
    	<artifactId>HelloFriend</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<scope>compile</scope>
    	<exclusions>
    		<exclusion>
    			<groupId>commons-logging</groupId>
    			<artifactId>commons-logging</artifactId>
    		</exclusion>
    	</exclusions>
    </dependency>

     

四、举例

  1. 路径最短者优先原则
    1. 依赖顺序:SecondTest,ThirdTest,FirstTest:2.0
    2. 最终依赖的FirstTest版本:WebTest工程一共引入了3个FirstTest jar包,距离最近的是FirstTest:2.0,所以WebTest工程依赖的是FirstTest:2.0
    3. 注意:此时WebTest工程依赖的是FirstTest:2.0,war的lib文件夹下也是FirstTest:2.0,FirstTest:1.0并没有打到war包里面,所以在这个工程里面,SecondTest也变成依赖FirstTest:2.0了
  2. 先声明者优先:dependency标签的声明顺序
    1. 依赖顺序:SecondTest,ThirdTest
    2. 最终依赖的FirstTest版本:WebTest工程一共引入了2个FirstTest jar包,距离相同,FirstTest:1.0先声明,所以WebTest工程依赖的是FirstTest:1.0
    3. 注意:此时WebTest工程依赖的是FirstTest:1.0,war的lib文件夹下也是FirstTest:1.0,FirstTest:2.0并没有打到war包里面,所以在这个工程里面,ThirdTest也变成依赖FirstTest:1.0了
  3. 简单的测试工程,可以测试上面所说的内容:https://gitee.com/shuair/testMaven.git

五、Tips

  1. 如有不对的地方还请告知,感激不尽

  2. 参考视频教程:http://www.gulixueyuan.com/my/course/42

六、其它maven相关博客

  1. maven依赖范围:https://blog.csdn.net/shuair/article/details/105350415
  2. maven依赖传递性:https://blog.csdn.net/shuair/article/details/105401296
  3. maven统一依赖版本号:https://blog.csdn.net/shuair/article/details/105404764
  4. maven聚合:https://blog.csdn.net/shuair/article/details/105416365
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值