原文:https://blog.csdn.net/lisongjia123/article/details/56299006
一、complie
编译域,这个是Maven中scope的默认值,我们平时不写scpoe配置时默认就是使用这个值。compile表示被依赖项目需要同当前项目编译时一起进行编译,项目测试期以及本项目运行时期同样生效,打包的时候需要包含进去。
二、test
测试域,表示被依赖的项目仅在项目进行测试的时候生效,一般将日志等依赖包(如:logback、Junit、Slf4j等)配置为test,项目运行时不会生效。
三、runtime
运行域,表示被依赖项目不会参与项目的编译,但项目的测试期和运行时期会参与。与compile相比,跳过了编译这个环节。
四、provide
provided意味着打包的时候可以不用打包进去,别的容器会提供,如在web项目中会使用该配置域,例如:当Spring框架提供了日志等包时,自己的日志依赖就可设置为provide。配置provide的被依赖项目会参与编译,测试,运行等周期,同compile,但是在打包阶段做了exclude的动作。
五、system
系统于,配置的效果和周期与provided相同,不过被依赖项不会从maven远程中央仓库下载,而是从本地Maven仓库中获取,节省一定的网络带宽。