java培训Maven依赖的传递性与排除

4 依赖的传递性

当存在间接依赖的情况时,主工程对间接依赖的jar可以访问吗?这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问。例如:

Maven工程

依赖范围

对A的可见性

A

B

C

compile

D

test

×

E

provided

×

5 依赖的原则:解决jar包冲突

①路径最短者优先

Java培训

②路径相同时先声明者优先

java培训

这里“声明”的先后顺序指的是dependency标签配置的先后顺序。

6 依赖的排除

有的时候为了确保程序正确可以将有可能重复的间接依赖排除。请看如下的例子:

  • 假设当前工程为survey_public,直接依赖survey_environment。
  • survey_environment依赖commons-logging的1.1.1对于survey_public来说是间接依赖。
  • 当前工程survey_public直接依赖commons-logging的1.1.2
  • 加入exclusions配置后可以在依赖survey_environment的时候排除版本为1.1.1的commons-logging的间接依赖

<dependency>

       <groupId>com.atguigu.maven</groupId>

       <artifactId>Survey160225_4_Environment</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <!– 依赖排除 –>

       <exclusions>

              <exclusion>

                     <groupId>commons-logging</groupId>

                     <artifactId>commons-logging</artifactId>

              </exclusion>

       </exclusions>

</dependency>

<dependency>

       <groupId>commons-logging</groupId>

       <artifactId>commons-logging</artifactId>

       <version>1.1.2</version>

</dependency>

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训课程视频供广大学员下载学习


上一篇:
下一篇: