目录
前言
由于maven项目之间pom文件jar包的相互引用,导致一些底层不需要的jar包或者低版本的jar包被引入,而当前项目又没办法直接体现是哪个引用携带了这些jar包,这使得排除或者解决jar包冲突变得困难。下面我就教大家两种查找maven依赖层级关系的方法
一. 命令行方式查找(推荐)
1.通过idea 的 terminal 界面使用命令行方式进行查找,层级关系清晰,无须繁琐的通过界面查找关系。
命令结构
技巧:可先用命令1方式执行,不行换成命令2即可,这样就无须去知道是否有插件
命令1:pom文件有maven插件的情况 结构: mvn dependency:tree -Dverbose -Dincludes=pom文件的<groupId>:pom文件的<artifactId> 例子: mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-core
命令2:pom文件无插件查询的情况(可添加插件依赖) 结构: mvn 插件版本信息:tree -Dverbose -Dincludes=pom文件的<groupId>:pom文件的<artifactId> 无插件可直接使用此命令: mvn org.apache.maven.plugins:maven-dependency-plugin:3.3.0:tree -Dverbose -Dincludes=pom文件的<groupId>:pom文件的<artifactId> 例子: mvn org.apache.maven.plugins:maven-dependency-plugin:3.3.0:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-core <pom文件可添加插件依赖,就可以用命令1方式执行,这样就无须在执行的时候加上版本信息> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution> </executions> </plugin> </plugins>
使用案例: 查找log4j-core的层级结构
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.19.0</version> </dependency>
//有插件命令写法 mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-core //无插件命令写法 mvn org.apache.maven.plugins:maven-dependency-plugin:3.3.0:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-core
注:无插件执行命令1会报No plugin found for prefix '?dependency' in the current project and in the plugin groups xxx,原因是未指定插件版本,加上插件版本信息或者换成命令2即可。
具体步骤(查找springfox-swagger2依赖层级为例):
a. 快速查找目标结构:选中idea界面的External Libraries 依赖包列表,直接输入需要查找的对象名称,就能显示定位
b. 打开terminal 界面,输入命令
c. 命令1方式:mvn dependency:tree -Dverbose -Dincludes=XXX
d. 命令2方式:mvn org.apache.maven.plugins:maven-dependency-plugin:3.3.0:tree -Dverbose -Dincludes=XXX
e. 执行结果:
f. 查找出来以后,可以进行排除冲突/升级版本等操作,下面是排除冲突操作。
二. 界面方式查找
idea自带了查找maven依赖的功能,具体操作如下:
a. 打开有两种方式:
一种是选中pom文件右键选择maven->show dependencies.
另外一种是通过maven控件直接打开。
b. 打开以后可以看到整个关系图,通过ctrl+滑轮可以进行放大跟缩小
c. 点击ctrl+f 键快速打开搜索框,输入关键字进行查找
d. 点击指向线会出现高亮,可以根据线条指示进行查找
e. 双击对应jar包可以进入到具体的依赖关系里面