maven 依赖 传递
就是在 本maven 的pom文件 中 写上 别的maven pom文件的坐标
<groupId>组id 项目的包名</groupId>
<artifactId>项目的id名 就是项目的名称</artifactId>
<version></version>
直接依赖 ,A依赖 传递 B依赖 中间没有其他的依赖传递
间接依赖,A依赖 传递 B依赖 再传递 C依赖
A依赖 与 C依赖 就是 间接的依赖关系
因为 在他们中间 还有隔着别的依赖传递
依赖会有冲突
在依赖传递过程中产生了冲突,优先法则
(1)路径优先:当依赖中出现相同资源时,层级越深,优先级越低,反之则越高
(2)声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖靠后的
(3)特殊优先:当同级配置了相同资源的不同版本时,后配置的覆盖先配置的
可选依赖
这就是 将依赖隐藏起来 为了不被别的maven项目中pom文件识别到。
<optional>true</optional>
将这个写到 具体tar依赖配置的最后一行
设置成 true 就会隐藏不会被别的pom文件识别。
排除依赖
就是将pom文件里设置的依赖删除掉
<exclusions>
<exclusion>
<groupId>junit<groupId/>
<artifactId>junit<artifactId/>
</exclusion>
<exclusions/>
注意:这里不写依赖的版本号 version 标签
排除依赖是断开依赖的传递 在依赖传递后用的
可选依赖是为了不被识别 在依赖传递前用的
依赖范围
依赖的jar默认情况可以在任何地方可用,可以通过scope
标签设定其作用范围
这里的范围主要是指以下三种范围
(1)主程序范围有效(src/main目录范围内)
(2)测试程序范围内有效(src/test目录范围内)
(3)是否参与打包(package指令范围内)
scope
标签的取值有四种:compile,test,provided,runtime
scope 是范围的意思
compile 在任何范围内都能用 适合 log4j
test 只能用在测试中 适合 junit
provided 不能打包,可以主代码与测试代码中使用 适合 servlet-api
runtime 只能在打包时候用 适合 jdbc