scope 作用
Dependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for various build tasks.
主要是限制依赖的传递性,比如有些jar包只会在测试的时候才会有效,部署的时候不会生效。
scope的分类:
scope |
生效时机 |
举例 |
compiled |
编译/测试/运行 |
默认 |
provided |
编译/测试 |
servlet-api 由tomcat等容器提供 |
runtime |
运行 |
编译的时候只需要,JDBC API, 运行的时候必须要有JDBC驱动实现 |
test |
测试的时候才引入 |
junit 只在测试的时候生效 |
system |
编译/测试 |
必须显式的提供jar的本地文件系统路径 |
import |
只支持dependencyManagement 元素下的type是pom的节点 |
only available in Maven 2.0.9 or later |
import scope
使用方
1 2 3 4 5 6 7 8 9 10
| <dependencyManagement> <dependencies> <dependency> <groupId>com.air</groupId> <artifactId>haha</artifactId> <version>${com.air.haha.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencyManagement>
|
com.air.haha的声明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <project> <modelVersion>4.0.0</modelVersion> <groupId>com.air</groupId> <artifactId>haha</artifactId> <packaging>pom</packaging> <name>haha</name> <version>1.0</version> <dependencyManagement> <dependencies> <dependency> <groupId>test</groupId> <artifactId>a</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>b</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> </dependencies> </dependencyManagement> </project>
|
使用方在使用的时候就可以不用指定,haha中包含的依赖的版本,默认就会使用haha中声明的版本。这样在升级的时候,可以保证依赖一同的升级。
参考
Maven – Introduction to the Dependency Mechanism
《Maven权威指南》—— 9.4 (项目依赖)