MAVEN项目打印依赖树,查看依赖最准确直观的方式
maven打印依赖树
打印MAVEN依赖树能解决什么问题?
查看maven依赖的方式有很多种,比如通过pom.xml一层层查看,通过lib文件夹查看等,但我觉得如果是一个大型项目,涉及模块很多,依赖引用就会变的非常复杂,此时通过这种查看方式效率就会很低,还有个主要问题就是同一个jar包可能通过多个jar间接依赖进来,那确定到底是通过哪个jar依赖进来的就显得很重要,不然改半天发现不生效,还会导致别的问题,所以查看项目依赖树就很准确和直观,能够进行快速定位,并确认修改后是否生效。
怎么打印MAVEN依赖树?
通过mvn dependency:tree命令来打印依赖树
执行命令方式如下:
- 通过pom.xml右键打开Open In Terminal:

- 直接左下角termina打开

打开后在项目跟目录下执行maven打印依赖树命令:mvn dependency:tree >> D:/tree.txt
这里可以输出到一个文档中,也可以不输出直接打印到控制台
Tip:命令行方式执行一定要先添加MAVEN环境变量
添加MAVEN_HOME:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.2\plugins\maven\lib\maven3
追加Path:%MAVEN_HOME%\bin
添加后重启电脑,在命令行中执行mvn -v查看是否添加成功。
- 通过Maven工具栏窗口Run Anything 窗口执行

输入mvn dependency:tree执行
打印后的依赖树是啥样的?
如下就是打印出来后的依赖树样式,其中主要有三个符号:
“|” 表示一个层级
“+-” 同一层级下,表示该包后面还有其他依赖包
“\-” 同一层级下,表示该包后面不再其他依赖包。即同一层依赖的最后一个节点。

假如我们需要寻找spring-aop这个jar包到底是通过哪个jar包间接引用进来的,如是我们搜索就能发现依赖关系如下:

那么如果我们此时不想使用spring-aop:jar的5.0.6这个版本,想使用其他的版本,那么我们就可以通过在pom.xml中找到这个spring-webmvc,剔除spring-aop这个依赖,再引用我们自己需要的依赖即可
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.6.RELEASE</version>
<!-- 剔除不需要的jar -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 重新添加需要的jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.0.14.RELEASE</version>
</dependency>
修改完成后,我们重新更新下依赖,再次打印依赖树查看依赖情况发现aop包已经换成了我们需要的版本对应的jar包了。

补充:
也可以查看指定jar包的依赖树
查看依赖树中包含某个groupId和artifactId的依赖链mvn dependency:tree -Dincludes=com.alibaba:fastjson:
更多推荐



所有评论(0)