在Maven的生命周期中,存在编译、测试、运行等过程,那么有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用的是JDBC接口),而是在运行时用到的;还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已。
代码语言:javascript复制 <groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<type>jar</type>http://lx.gongxuanwang.com/sszt/7.htm
<scope>test</scope>
<optional>false</optional>
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
上面湖北遴选的示例我们定义了junit的依赖,而且junit只在测试阶段生效。具体配置参数如下:
- type:依赖类型,对应构件中定义的 packaging,可不声明,默认为 jar;
- scope:依赖范围,大致有compile、provided、runtime、test、system等几个;
- ovided:已提供依赖范围。编译和测试有效,运行无效。如 servlet-api ,在项目运行时,tomcat 等容器已经提供,无需 Maven 重复引入;
- runtime:运行时依赖范围。湖北遴选测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;
- system:系统依赖范围。和 provided 依赖范围一致,也是编译和测试有效,需要通过 显示指定,且可以引用环境变量;