总体概括:
scope 是用来限制 dependency 的作用范围的,影响 maven 项目在各个生命周期时导入的 package 的状态
取值含义:
- compile:默认值,参与编译、运行测试,会被打包;
- test:只参与测试,不会被打包;例如junit测试依赖jar包
- runtime:参与测试和运行,会被打包;例如JDBC驱动依赖jar包
- provided:参与编译和测试,不会被打包;例如:开发web的时候,需要用到servlet-api,在pom.xml中添加依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
由于tomcat中也有servlet-api包,会发生冲突所以应添加<scope>provided</scope>
5. system:用于从本地文件系统获取,需要添加 systemPath 的属性来定义路径;例如导入支付宝的开发jar包:
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>20170324180803</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/alipay-sdk-java20170324180803.jar</systemPath>
</dependency>
- import:用于解决Maven项目单继承问题,看一下我写的这篇文章,讲解的比较详细,点击我