MAVEN学习笔记
一、scope作用
1.scope配置详解
-
compile:
默认配置,表示依赖项目需要参与当前项目的编译
-
test:
表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行
-
runtime:
表示被依赖项目无需参与项目的编译
-
provided:
打包的时候可以不用打包进去,别的web容器(eg:tomcat)会提供。事实上该依赖
理论上可以参与编译、测试、运行等周期,相当于compile,但是在打包阶段做了exclude的动作
-
system:
同provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。
2.依赖包传递关系
二、Optional & Exclusions使用区别
1.作用
都是用来配出jar包的依赖
2.Optional
依赖包只在本项目中传递,不会传递到父项目中
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
<version>1.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
</project>
3.Exclusions
主动排除子项目传递过来的依赖。
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
4.两者使用场景
总结:
- 如果子项目加上了标签,此时父项目无需使用依赖包会不会被传递。
- 如果子项目没用标签,此时父项目需要加上主动排除依赖包
剩下的知识点以后会持续补充!!!