Maven项目意外引入bcprov-jdk16-1.46.jar如何排查移除
排查并移除Maven冗余传递依赖方案
步骤1:定位bcprov-jdk16-1.46.jar的引入来源
- 命令行排查:在项目根目录执行以下命令,会直接过滤输出所有间接引入该jar包的父依赖链路
mvn dependency:tree -Dincludes=org.bouncycastle:bcprov-jdk16 - IDE可视化排查:IDEA用户可右键点击pom文件,选择
Diagram->Show Dependencies,搜索bcprov-jdk16即可直观看到依赖链路;Eclipse用户可通过Maven插件的Dependency Hierarchy视图搜索定位。
步骤2:移除冗余依赖
找到引入来源后,任选以下一种方案处理即可:
方案1:在对应父依赖中排除该传递依赖
修改引入该jar的父依赖配置,添加排除规则,示例如下:
<dependency> <groupId>此处替换为你查到的父依赖groupId</groupId> <artifactId>此处替换为你查到的父依赖artifactId</artifactId> <version>父依赖版本号</version> <exclusions> <exclusion> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId> </exclusion> </exclusions> </dependency>
方案2:全局锁定bcprov版本
如果项目中可能多处引入不同版本的bouncycastle相关依赖,可在pom的dependencyManagement节点中统一声明你需要的版本,所有传递依赖会自动适配该版本,同时避免版本冲突:
<dependencyManagement> <dependencies> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.69</version> </dependency> </dependencies> </dependencyManagement>
配置完成后重新执行mvn dependency:tree确认bcprov-jdk16已不存在于依赖树,再重新构建项目即可。
内容的提问来源于stack exchange,提问作者Pankaj。
相关产品推荐
相关产品推荐

