项目管理工具——Maven学习笔记(十、Maven传递依赖)

传递依赖关系

假设 A 依赖 B , B 依赖 C ,我们称 A 对 B 是第一直接依赖, B 对 C 是第二直接依赖, A 对 C 是传递依赖。

现在使用Eclipse做实验证明这个结论~
1.首先创建三个Maven项目。

Paste_Image.png

2.让【maventest-a】依赖【maventest-b】。那么首先需要将【maventest-b】打包安装到本地仓库,这样【maventest-a】才可以在本地仓库找到它,完成依赖。

项目管理工具——Maven学习笔记(十、Maven传递依赖)_第1张图片
Paste_Image.png
Paste_Image.png
项目管理工具——Maven学习笔记(十、Maven传递依赖)_第2张图片
Paste_Image.png
Paste_Image.png

这样,【maventest-b】的包就存在于本地仓库了~然后在pom.xml文件中添加依赖如下:


Paste_Image.png

编译【maventest-a】。

项目管理工具——Maven学习笔记(十、Maven传递依赖)_第3张图片
Paste_Image.png
项目管理工具——Maven学习笔记(十、Maven传递依赖)_第4张图片
Paste_Image.png

成功!同样照这个步骤,完成【maventest-b】依赖【maventest-c】。

完成【maventest-c】的jar包安装到本地仓库后,【maventest-b】的pom.xml文件添加【maventest-c】的依赖,然后编译【maventest-b】。


Paste_Image.png

3.这时【maventest-a】对【maventest-c】就是传递依赖。虽然【maventest-a】没有直接依赖于【maventest-c】,但由于【maventest-a】直接依赖【maventest-b】,【maventest-b】又直接依赖于【maventest-c】,所以【maventest-a】是间接依赖了【maventest-c】。
实践出真理,如图可知,我们的结论是正确的:

项目管理工具——Maven学习笔记(十、Maven传递依赖)_第5张图片
Paste_Image.png

4.但是呢,假如我们不想要这个传递依赖呢。就是【maventest-a】只想依赖【maventest-b】,不想跟【maventest-c】有关系,该怎么办呢?这里,我们就需要用到排除依赖。很简单,在pom.xml里添加标签,具体如图:

项目管理工具——Maven学习笔记(十、Maven传递依赖)_第6张图片
Paste_Image.png

如图所述,在依赖【maventest-b】的时候,我们排除了【maventest-c】。

项目管理工具——Maven学习笔记(十、Maven传递依赖)_第7张图片
Paste_Image.png

果然只剩下【maventest-b】了!


增加一点题外内容,在Eclipse里。有个小问题。

Paste_Image.png

在【JRE System Library】默认是【J2SE-1.5】,但我实际用的是1.8哎,该怎么解决这个问题呢?

Paste_Image.png

找到maven的settings.xml文件,增加如下内容:


      jdk-1.8

      
        true
        1.8
      

      
        1.8
        1.8
        1.8
      
     
    

这回再新建项目就是正确的了!

项目管理工具——Maven学习笔记(十、Maven传递依赖)_第8张图片
Paste_Image.png

你可能感兴趣的:(项目管理工具——Maven学习笔记(十、Maven传递依赖))