maven中B模块依赖A模块,默认在生产环境(即IDEA中A,B两模块在同一级)即便你Install把模块A安装在了本地库,但其实生产环境中用的还是上面的模块A,而不会使用本地库中刚刚构建好的依赖。
如图我们在Junit的jar包进行Install构建到本地仓库,可以看出Junit的使用环境是test,我们构建后即便B模块进行引入,理论上也不会继承到Junit的依赖。
例如:本地库中已经够建好了
然后我们在B模块中对A进行引入
3,在测试方法中想使用@Test注解是不能使用的,因为此时A模块中Junit的使用范围是test而且本地库中对A模块构建也是基于test使用范围的。
4,但是如果我们把IDEA中A模块的Junit的使用范围修改成默认的compile时就会出现问题
5,这时我们再次到B模块中,可以看到@Test居然能用了
而且在右边B项目的依赖中,我们可以明显看到B模块从A模块的依赖中中继承到了Junit的Jar包
6,注意:我的本地库构建的A依赖的Junit的Jar包的范围仍然是test
因此发,我们可以得出一个结论:如果A,B模块在同一级别目录下,如果B对A进行依赖引入,那么不论你在本地库对A模块进行了如何构建。B模块引入的仍然是以IDEA中最新的A模块的pom.xml中配置的内容为准。
7,如果我们把IDEA中A模块进行删除,那么此时B模块只能去本地库中寻找A依赖。那么此时本地库中A依赖的Junit的Jar包的范围仍然是test。那么B模块就不会从A中继承得到Junit,即不能使用@Test。