scope标签就是依赖的范围!!!

Maven —— jar包的依赖范围(scope标签)_ide

在依赖声明中,scope标签指定的就是当前项目在什么情况下对目标项目有依赖。可选值包括:compile、test、provided、runtime、system:

  1. compile:默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段。
  2. provided:只在开发、测试阶段使用,目的是不让Servlet容器和你本地仓库的jar包冲突 ,告诉maven这个jar包未来在我的服务器中有,不需要将它打包在工程中;实际项目打包的时候,lib文件夹里面maven导入的provided包(jar包)都没有。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api。
  3. runtime:只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  4. test:只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  5. system:(类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它)系统范围,与provided类似,只是标记为该scope的依赖包需要明确指定基于文件系统的jar包路径。因为需要通过systemPath指定本地jar文件路径,所以该scope是不推荐的。如果是基于组织的,一般会建立本地镜像,会把本地的或组织的基础组件加入本地镜像管理,避过使用该scope的情况。