<scope>标签限定pom的依赖范围
依赖的范围就是控制依赖<dependency>和三种classpath的关系
maven提供了三种class path:
1. 编译 2.测试 3.运行 三种class path5
这张图中junit的scope是test ,表明junit只存在于测试的class path中。
一共有6种scope范围:
1 .compile: 默认的scope,编译测试运行都有效。
2 . provided:在编译和测试时有效。在运行时不会被加入。比如:构建Java应用时我们可能会添加对servlet的依赖,此时就需要设置scope范围为provided。对于servlet API接口,Java应用运行时并不会使用这个依赖,因为web容器提供了servlet的API,加入进去会导致冲突。
3 .runtime:在测试和运行时有效,eg:项目主代码的编译只需jdk提供的JDBC API 。准备测试或者运行程序时,才需要jdbc接口的具体实现。
4 . test :只在测试时有效
5. system:与本机系统相关联,可移植性差。比如我们要引用本机的Java HOME系统变量,如果移植到其他系统上面,可能无法识别出正确的路径。其他和provided相似,在测试和编译时有效。
6. import :导入的依赖范围,它只用在<dependencyManagement>标签中,表示从其他pom文件中继承过来的依赖。
如下图所示:(没找到原文档,有点模糊)
这里 表示将A中的依赖导入到projectB 中