通过jar包的groupId和artifactId查找项目中哪个依赖引入这个包

原因

最近爆出log4j2 2.14及之前的版本存在严重漏洞,公司发出公告,各项目组进行紧急修复,虽然我们项目组没有引入log4j2,但是不知道第三方依赖是否有引入,又不能一个个点开第三方依赖包去查,照着“全世界这么大,我遇到的问题,前辈们肯定也遇到过”的逻辑,在网上找了一下,果然有发现。。。

解决方案

第一种

通过Show Dependencies(快捷键:Ctrl+shift+Alt+U),可以查看整个项目所有依赖的层次图。
在这里插入图片描述
可以通过Ctrl+F,搜索想要查询的依赖,看看有哪些第三方或者官方依赖引入了它。
不过这种方式,显示的内容实在是太多了,不是很方便。

第二种

使用命令(Run Anything,快捷键:Ctrl+Ctrl)指定依赖的groupId和artifactId直接查找那个依赖引入了它。
mvn 项目名 dependency:tree -Dverbose -Dincludes=groupId:artifactId
后面是想要查找jar包的groupId和artifactId。
比如我现在要查找springcloud gateway引入的webflux依赖,命令如下:
mvn ptr-applet-background dependency:tree -Dverbose -Dincludes=org.springframework.boot:spring-boot-starter-webflux
查询结果如下:
在这里插入图片描述
上图中显示了哪个项目引入的哪个依赖引入了webflux,很清晰,也很简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
出现多个一样版本的jar包通常是由于项目依赖的其他jar包引入了不同版本的同一jar包,你可以使用IDE的依赖分析工具,比如Maven Dependency Plugin或者IDEA自带的Dependency Analyzer来查找冲突的依赖。 如果你发现有重复的依赖,你可以使用Maven Dependency Management或者Gradle Dependency Management来解决冲突。在你的项目的pom文件,你可以指定你需要的依赖,以及该依赖的版本号和范围,比如: ```xml <dependency> <groupId>com.example</groupId> <artifactId>example-lib</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency> ``` 在这个例子,我们指定了com.example:example-lib:1.0.0这个依赖,它的范围为compile,也就是在编译和运行时都需要这个依赖。如果你有多个依赖需要同一个jar包,你可以在你的pom文件指定一个dependencyManagement元素,来指定这个jar包的版本号和范围: ```xml <dependencyManagement> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>example-lib</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.example</groupId> <artifactId>example-lib2</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency> </dependencies> </dependencyManagement> ``` 在这个例子,我们指定了com.example:example-lib和com.example:example-lib2这两个依赖的版本号和范围都为1.0.0和compile。这样,当你在你的项目引入这两个依赖时,默认会使用指定的版本号和范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值