Maven Scope范围
Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只能用于测试,比如Junit;有些依赖编译时用不到,只有运行时才能用到,比如mysql的驱动包在编译期就用不到(编译器用的是JDBC接口),而是在你运行时用到的;还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已,maven的scope大致有以下几个:
- compile:默认的scope,运行期有效,需要打入包中
- provided:编译期有效,运行期不需要提供,不会打入包中
- runtime:编译不需要,在运行期有效,需要导入包中(接口与实现分离)
- test:测试需要,不会打入包中
- system:非本地仓库引入、存在系统的某个路径下的jar(一般不用)