scope属性
<dependency> scope属性是用来限制第三方依赖包的做用范围, 影响maven项目在各个生命周期时导
入的package的状态。自从2.0.x后,新增了1种,如今有了6种经常使用scope:
-
compile
* 默认的scope
* 表示 dependency 能够在生命周期中使用。且这些dependencies 会传递到依赖的项目中
-
provided
* 跟compile类似,可是代表了dependency 由JDK或者容器提供【例如Servlet API等】
* 这个scope 只能做用在编译和测试时,同时没有传递性。不会将包打入本项目中,只是依赖过来。
-
runtime
表示dependency不做用在编译时,但会做用在运行和测试时
-
test
表示dependency做用在测试时,不做用在运行时
-
system
* 跟provided 类似。必须经过元素显式地指定依赖文件的路径,maven不会在repository查找它
* 因为此类依赖不是经过maven仓库解析的,并且每每是与本机系统绑定,可能形成构件的不可移
植性,因此要谨慎使用。
-
import
* maven 2.0.9 以后新增
* 只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置
type属性