11-Maven: Maven依赖传递, 以及传递失效问题以及Scope用法

来源:互联网 发布:网络加速器 安卓 编辑:程序博客网 时间:2024/05/18 00:24

依赖关系 :依赖多个项目,这些项目中有相同jar包,但版本不同,那选择哪个呢?

现在有三个项目:Hello, HelloFriend, MakeFriend,

在Hello,HelloFriend分别引入了不同版本的log4j-1.2.9.jar,log4j-1.2.17.jar,

三个项目关系是HelloFriend依赖了Hello,MakeFriend依赖了HelloFriend;



Maven依赖关系有冲突时,采用原则:

1.路径最近者优先:

如:HelloFriend离MakeFriend最近,就采用HelloFriend中的jar

2.    路径相同,第一声明者优先

如:Hello比HelloFriend前生明,就采用HelloFriend中的jar



注:但是在测试路径最近者优先,在MakeFriend中并没有引入到log4j:

如:

在Hello项目中的pom.xml引入了一个log4j-1.2.9.jar的包:


在HelloFriend项目中的pom.xml引入了Hello项目和一个log4j-1.2.17.jar的包:


MakeFriend项目中的pom.xml引入HelloFriend项目:但是注意在MakeFriend项目中并没有引入到依赖项目的log4j包,



解决办法:

注意Hello和HelloFriend的项目截图,有一个标签scope值为test:


scope作用是设置传递性依赖和可选依赖。Hello和HelloFriend项目中的cope标签值改为compile
或者删除它即可,因为作用范围的问题。修改后查看效果,就依赖引入成功:





附上scope参数说明,如下图:





2.路径最近者优先:

如:HelloFriend离MakeFriend最近,就采用HelloFriend中的jar

0 0
原创粉丝点击