您的位置:首页 > 运维架构

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

2017-04-20 16:06 393 查看
依赖关系 :依赖多个项目,这些项目中有相同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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: