Maven依赖配置、依赖传递和依赖范围。

桃扇骨 2023-10-11 21:11 138阅读 0赞

一、依赖传递。

依赖具有传递性:

1、直接依赖:在当前项目中通过依赖配置建立的依赖关系。

2、间接依赖:被资源的资源如果依赖其他资源,当前项目简介依赖其他资源。

3、依赖传递冲突问题:

路径优先:当依赖中出现相同的资源时,层级越深,优先级越深,层级越浅,优先级越浅。

声明优先:当资源在相同层级北一来时,配置排序考前的覆盖靠后的。

特殊优先:在同一个文件下的不同版本,后配置的覆盖先配置的。

c7e114e20abe40378388af10ca8e180f.png

三、可选依赖。

可选依赖指对外隐藏当前所依赖的资源,不透明。

  1. <optional>true</optional>

四、排除依赖。

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本,不需要。

  1. <exclusions>
  2. <exclusion>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-configuration-processor</artifactId>
  5. <optional>true</optional>
  6. </exclusion>
  7. </exclusions>

a5515b6a432d4d568ebdb9957c0117c6.png

五、依赖范围。

依赖的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

发表评论

表情:
评论列表 (有 0 条评论,138人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Maven依赖范围

    依赖范围就决定了你依赖的坐标 在什么情况下有效,什么情况下无效: ❀compile 这是默认范围。如果没有指定,就会使用该依赖范围。表示该依赖在编译和运行时都生效。 ![

    相关 Maven依赖范围

    依赖范围就决定了你依赖的坐标 在什么情况下有效,什么情况下无效: ❀compile 这是默认范围。如果没有指定,就会使用该依赖范围。表示该依赖在编译和运行时都生效。 ![