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