内容简介
1.测试目的
2.父子模块间的依赖
3.普通项目或模块间的依赖
4.总结
测试目的
compile,test,provided这三种是项目中常用的scopes范围依赖,测试这三种范围有利于理解模块与模块或项目与项目之间jar包依赖的传递性的不同。
父子模块间的依赖
子模块引用了父模块便拥有了父模块的所有jar包,包括父模块test范围的jar包和provided范围的jar包。
![](https://img.haomeiwen.com/i16380251/354f05a2d667558a.png)
![](https://img.haomeiwen.com/i16380251/aa716026fcb48b00.png)
父模块将自己依赖的包声明为test或provided也会被传递给子模块。
![](https://img.haomeiwen.com/i16380251/7409170e28c32b02.png)
2.普通项目或模块之间的依赖
普通模块与普通模块之间的依赖,弟弟模块依赖姐姐模块便会拥有姐姐所有依赖,但是姐姐的test范围依赖不传递给弟弟模块(这里已提前将父模块的所有jar包依赖去除)。
![](https://img.haomeiwen.com/i16380251/06da7bb5b56a7481.png)
![](https://img.haomeiwen.com/i16380251/22e9b034c2e68192.png)
依赖的模块中声明为test范围的依赖不会传递给其他模块(弟弟模块依赖姐姐模块,但是不会得到姐姐模块中范围为test的依赖)。
![](https://img.haomeiwen.com/i16380251/d71c2f2344d4ab56.png)
provided:表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时在普通模块或普通项目之间没有传递性。
![](https://img.haomeiwen.com/i16380251/1a7d28ef987162d4.png)
但是子项目继承父项目后,父项目的所有项目还是会传递给子项目,是所有!包括范围为provided的依赖。
![](https://img.haomeiwen.com/i16380251/e207db7a3cfdb4c8.png)
4.总结
子模块会继承父模块所有依赖,无论父模块的依赖声明范围是什么(test,provided都不会起作用)。
普通模块或普通项目之间,依赖范围会正常生效。test、provided范围的依赖不能被传递,compile会正常传递(默认scopes就是compile)。
网友评论