Maven实战-第五篇(Maven的传递性依赖)

Maven实战-第五篇(Maven的传递性依赖)

今天我们分享的内容是Maven中的传递性依赖。在介绍这个内容之前,在使用Maven时会不会有这样疑惑。也就是当我们引入一个组件时,需要在pom.xml中配置相关依赖的标签。但这个组件可能还会依赖其它的组件。如果我们每引入一个依赖时,都需要将这个依赖所依赖的组件配置写到pom.xml中这样会导致,我们需要配置的依赖的标签就会非常的多,并且我们也很难知道一个组件和依赖的其它的组件到底是什么。且这样也违背了Maven通过坐标引入组件的目的了。因为它不够简单与便捷。为了解决上述的问题,Maven引入了传递性依赖。所谓的传递性依赖的,指的就是当我们引入一个组件时,如果这个组件还依赖其它的组件,那么Maven就会自动将其它的组件也一同下载下来,并且并不需要我们引入这些额外的依赖。


下面我们通过代码验证一下,还是我们之前的代码事例,也就是引入fastjson依赖包,来验证一下上面所说。具体配置如下:

  • pom.xml
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.26</version>
</dependency>

我们创建一个新的项目,并在项目中添加上面的依赖。

Maven实战-第五篇(Maven的传递性依赖)

我们展开External Libraries目录,就可以现在项目中引入的所有外部的依赖包。

Maven实战-第五篇(Maven的传递性依赖)

我们看上图所示,项目引入了3个依赖包,但我们依赖的配置只配置了一个依赖,这就是Maven传递性依赖的作用,如果没有传递性依赖,则上面只有显示一个依赖包,并且需要我们手动的将其它的依赖包配置到项目中,才可以使用。


除了通过上面的方式查看项目的依赖外,IDEA中还提供了以下的方式查看依赖,并且这种方式更直观。

首先,我们选中项目中的pom.xml。然后右键选择Maven然后选择Show Diagram ...

Maven实战-第五篇(Maven的传递性依赖)

当我们点击后就会看到下图所示:

Maven实战-第五篇(Maven的传递性依赖)

它显示了我们项目所有的依赖包,并且会按照我们传递性依赖的顺序显示。按照上图显示,我们知道,虽然,我们只引入了fastjson依赖,但是因为它依赖了fastjson-extension。所以Maven会继续引入这个依赖包。又因为fastjson-extension依赖了fastjson2,所以Maven又会引入这个依赖。这也就是传递性依赖引入依赖包的顺序。


除此之外,Maven也提供了相应的命令来查看我们项目中的依赖。具体命令如下:

  • mvn dependency:list

使用上述命令可以列出我们项目所有的依赖包。

  • mvn dependency:tree

此命令和上面的命令一样,也可以列出我们项目所有的依赖包,不同之处就是这个命令可以按照树的方式展示,方便我们查看依赖关系。而上面的命令是同一级显示的。

  • mvn dependency:analyze

使用此命令Maven可以分析当前项目的依赖。


由于后续的内容中有专门的章节详细介绍上面的命令,所以这里就不做过多的介绍了。上面的内容就是Maven中传递性依赖的相关内容,它也是Maven可以非常方便我们管理依赖包的因素之一。

给TA打赏
共{{data.count}}人
人已打赏
Maven

Maven实战-第四篇(Maven的依赖配置)

2023-7-20 5:51:31

Maven

Maven实战-第六篇(Maven的依赖范围)

2023-7-23 8:55:59