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属性