Maven项⽬分析剔除⽆⽤jar引⽤的⽅法步骤
⼀、为什么要做这件事?
项⽬持续研发,不停地在上⾯新增功能,新增特性,引⼊新的框架和组件,jar包依赖多并且复杂,再加上需求各种变更,有不少已经存在的功能下线,但jar包依赖没⼈管,还是放在项⽬的l⽂件⾥。项⽬持续的时间⼀长,经常会出现项⽬打包要求内存多,时间慢的问题,如何分析项⽬中哪些依赖是有⽤的,哪些可以剔除的,⼀⽅⾯减轻打包内存占⽤多,时间慢的问题,另⼀⽅⾯照顾研发童鞋的强迫症问题(容不得半点⽆⽤jar包在我的项⽬⾥),这事就可以提上⽇程了。
⼆、怎么做?
如果是Maven项⽬,执⾏起来还是⽐较简单,Maven⾃⼰提供了⼀个检测⼯具,输⼊命令即可。
在IDEA中,切换到Terminal窗⼝,或者⽤命令⾏打开相应⼯程⽬录,直接输⼊
mvn dependency:analyzeready是什么意思
查看控制台输出的⽇志,重点关注这两部分:
少先队员采茶歌[WARNING] Ud undeclared dependencies found:
[WARNING] com.:jackson-annotations:jar:2.9.0:compile
[WARNING] com.:jackson-databind:jar:2.9.9:compile
[WARNING] io.jsonwebtoken:jjwt:jar:0.9.0:compile
[WARNING] ketmq:rocketmq-common:jar:4.5.2:compile
[WARNING] org.springframework:spring-beans:jar:5.1.8.RELEASE:compile
[WARNING] de.gson:gson:jar:2.8.0:compile
[WARNING] org.springframework.boot:spring-boot:jar:2.1.6.RELEASE:compile
[WARNING] com.:jackson-core:jar:2.9.9:compile手抄报国庆节>广东阳江海陵岛
[WARNING] org.springframework:spring-core:jar:5.1.8.RELEASE:compile
[WARNING] ketmq:rocketmq-remoting:jar:4.5.2:compile
[WARNING] Unud declared dependencies found:
[WARNING] org.projectlombok:lombok:jar:1.16.20:provided
[WARNING] org.springframework.boot:spring-boot-starter-test:jar:2.1.6.RELEASE:test
Ud undeclared dependencies found
间接依赖,就是说你在当前项⽬⼯程的l⾥没有直接声明,这个依赖是由你声明过的dependency⾥的l依赖传递得来的。
一样的近义词例如ketmq:rocketmq-common:jar:4.5.2:compile是你引⽤了这个:
笼的读音<dependency>
<groupId>ketmq</groupId>
河南高中<artifactId>rocketmq-client</artifactId>
<version>4.5.2</version>
</dependency>
Maven本来就是这样⽤的,也不建议说你把这部分引⽤拷贝到你的l⾥,⼀般来说这部分的WARNING可以忽略。Unud declared dependencies found
⽆⽤依赖,这个指我们在l声明了这个jar包的依赖,但在项⽬⼯程⾥没有使⽤到,这个不是我们此次关注的重点,确定不需要,就可以剔除掉这个依赖,Reimport后这个jar包就从我们项⽬中剔掉了。
三、什么时候做?
1)新项⽬建⽴时,引⽤jar包时要慎重,不要⼀股脑⼉直接拷贝⽼项⽬的依赖,避免后期⼜花时间来剔除。
2)功能代码重构时,可以适当做⼀次剔除,因为后⾯还有⾃测,提交测试环节,如果有误删,测试的时候能发现。
四、有什么风险要注意的?
1)这个检测的结果仅供参考,有时也不准确,如上⽂提及的org.projectlombok:lombok:jar:1.16.20:provided,实际上在项⽬中有使⽤到它的注解@Data,这个属于误判。要注意剔除依赖后多测试,⼯具毕竟有毕竟的缺陷性。什么是整合营销
2)如果童鞋们接⼿遗留的⽼项⽬时,这种问题肯定很多,但刚接⼿时不建议做这个操作,因为本⾝对项⽬不熟悉,上来就删东西导致问题会浪费很多时间和精⼒搞定依赖的问题,这块东西建议暂时先不要动。
五、补充⼀个⼩插件
查看l的依赖关系时,可以在IDEA上安装maven help插件,可以直观地看到各jar依赖关系
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。