依赖关系 :依赖多个项目,这些项目中有相同jar包,但版本不同,那选择哪个呢?
现在有三个项目:Hello, HelloFriend, MakeFriend,
在Hello,HelloFriend分别引入了不同版本的log4j-1.2.9.jar,log4j-1.2.17.jar,
三个项目关系是HelloFriend依赖了Hello,MakeFriend依赖了HelloFriend;
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