Maven依赖配置、依赖传递和依赖范围。
一、依赖传递。
依赖具有传递性:
1、直接依赖:在当前项目中通过依赖配置建立的依赖关系。
2、间接依赖:被资源的资源如果依赖其他资源,当前项目简介依赖其他资源。
3、依赖传递冲突问题:
路径优先:当依赖中出现相同的资源时,层级越深,优先级越深,层级越浅,优先级越浅。
声明优先:当资源在相同层级北一来时,配置排序考前的覆盖靠后的。
特殊优先:在同一个文件下的不同版本,后配置的覆盖先配置的。
三、可选依赖。
可选依赖指对外隐藏当前所依赖的资源,不透明。
<optional>true</optional>
四、排除依赖。
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本,不需要。
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</exclusion>
</exclusions>
五、依赖范围。
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围。
1、主程序范围有效(main文件夹范围内)
2、测试程序范围有效(test文件夹范围内)
3、是否参与打包(package指令范围内)
scope | 主代码 | 测试代码 | 打包 | 范例 |
---|---|---|---|---|
compile(默认) | Y | Y | Y | log4j |
test | Y | junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | jdbc |
还没有评论,来说两句吧...