如何通过jar包得知maven坐标,以及如何替换依赖的依赖的版本

问题一:我只能得到这个jar包的名字,如果得知这个jar包的maven坐标(groupId以及artifactId)?

思路1:将jar包的名字(去除版本号)在mvn仓库中搜索,地址:https://mvnrepository.com/,看能不能找到

思路2:反编译这个jar包,使用JD-GUI反编译工具
在这里插入图片描述
思路3:如果已经在IDEA中,直接定位到当前jar包的位置,
在这里插入图片描述

问题二:多模块的java工程中,存在一些依赖冲突,会出现多版本的依赖,比如当前模块1依赖A,A依赖B,当前模块2依赖C,C依赖B的另一个版本,这样打包的过程中会存在多个版本的B,如何解决?

子问题1:究竟是哪些依赖引入了B呢?需要找到是哪些依赖引入B

思路:使用maven命名查找
比如查找com.fasterxml.jackson.core:jackson-databind这个依赖有哪些依赖引入,使用maven命令:

mvn dependency:tree -Dverbose -Dincludes=com.fasterxml.jackson.core:jackson-databind

使用这个命令就能找到所有的引入com.fasterxml.jackson.core:jackson-databind依赖的引入路径。
在这里插入图片描述
从结果中可以看到是哪个模块,哪个依赖引入的,以及依赖引入的scope,注意provided不会打包进去,解决这个问题应该是从最基础的模块开始解决。

子问题2:接上一个问题的解答,现在我们已经知道了有很多其他的依赖引入了B的不同版本,由于B的老版本存在CVE漏洞,那么需要升级这个依赖的版本,如何做?

思路:首先需要排除掉多余的依赖引入,可以在相关的依赖上用

<dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
             <!-- 排除低版本的依赖  -->
            <exclusions>
                <exclusion>
                    <artifactId>jackson-annotations</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jackson-core</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jackson-databind</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
            </exclusions>
        </dependency>
         <!-- 引入高版本的依赖  -->
         <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>

IDEA有dependency Analyzer工具,可以方便解决jar包依赖冲突,排除后引入新版本的依赖即可
在这里插入图片描述

另:在maven中央仓库中可以看到哪些版本没有漏洞,可以选择一个没有漏洞的版本进行替换,平时在引入依赖的时候也可以查看这里,避免引入有漏洞的版本。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值