一、scope标签简介
scope, 作用域,表示依赖可以使用的范围。
二、scope取值及其含义
maven web项目目录结构如下
src
java # 程序主代码
main
resources
webapp
test # 测试代码
main
resources
取值 | 使用范围 | 是否参与打包 | 代表依赖 |
---|---|---|---|
compile | 测试代码、程序主代码 | 是 | commons-fileload.jar |
test | 测试代码 | 否 | junitl.jar |
provided | 测试代码、程序主代码 | 否 | servlet-api.jar |
runtime | 无 | 是 | mysql-connector-java.jar |
system | 测试代码、程序主代码 | 是 | ojdbc.jar |
说明:
- compile、test、provided 比较常用,其中scope默认取值为compile。
- runtime 常用complie 代替,而compile是默认可以不用配置,也就是所一般只配test和provided。
- 由于版权限制等原因,不是所有的jar包都存储在中央仓库中。scope取值为system时,表示依赖来自本地系统,需要配合标签systemPath(用于指定依赖路径)使用。 例如,我将依赖ojdbc放在 web项目/lib/ 中,则标签配置如下
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>6</version>
# groupId、artifactId、 version 可以自定义
<scope>system</scope>
<systemPath>${basedir}/lib/ojdbc6.jar</systemPath>
#${basedir} 为项目路径
</dependency>
开发中Maven管理的项目一般不这样做——把jar包放在项目的lib目录下,会搭建私服,把依赖放在私服中,如此ojdbc.jar 就不需要定义system取值了。