Maven中的scope主要以下几种:
compile
不声明scope元素下的默认值,compile表示被依赖的jar包需要参与项目的编译,运行周期,测试阶段,打jar包的时候需要放进去。
provided
provided表示目标容器已经提供jar包,打jar包时候不需要放入,写代码和编译的时候用的是idea或者tomcat中的jar包???测试的时候也是用容器里的jar包。重点是不需要被打包。下次用依赖的时候检查一下jar包的scope为provided,并检查一下idea或者tomcat中是否有,再理清楚是怎么用的,打包的时候检查一下里面有没有jar包依赖。
补充:dependency子标签optional如果为true,表示当前项目的依赖不会被打入jar包,并且不会被依赖传递到工程中,也就是一个项目中有很多模块,每个模块依赖jar包, x依赖于B,B依赖A,A不会依赖传递到x。
我的理解:
x依赖B,B依赖A,A不会依赖传递到X:翻译----> x的jar包有一些功能接口类,需要依赖B,B也有一些功能需要依赖A