目录
- 前言
- 正文
- 简介
- 用途
- 使用方法
- 通过命令行
- 通过idea
- 分析结果以及改进方案
- 使用的并且声明的依赖
- 使用的但是未声明的依赖
- 未使用的但是声明的依赖
- 总结
前言
完成新功能的开发后,在发包前组长告诉我要检查maven工程的依赖,并告诉我相关指令,此文记录一下使用方式
正文
简介
Maven官网之Dependency插件
Dependency
插件提供了操纵artifact
的能力,可以复制以及拆包本地或远程仓库的artifact
到指定地点。
Dependency
有很多的goal
,这里介绍js的是dependency:analyze
用途
用来分析项目的依赖并确定以下内容
- 使用的并且声明的依赖
- 使用的但是未声明的依赖
- 未使用的但是声明的依赖
在文章最后的《分析结果编程以及改进方案》章节中会介绍具体的含义
使用方法
前提:保证电脑已经下载了Maven
,以及已经配置好Maven
的环境变量
通过命令行
- 打开命令行,进入Maven项目或模块的根目录,即包含
pom.XML
的目录(如果该目录不包含pom.xml
则会报错) - 执行以下指令
mvn dependency:analyze
等待执行完毕后,会看到类似如下输出
通过idea
点击idea
右上方Add Configuration...
按钮(不同版本之间可能有差异)
在弹出窗口中点击左上角+
,选择Maven
指定项目路径Working directory
为想要分析的Maven项目/模块。
在命令行Command line
中输入dependency:analyze
(IDEA
中执行Maven指令并不需要以mvn
开头,IDEA
会自动添加)
点击IDE右上方的执行run
或debug
开始执行
等待执行完毕后,会看到类似如下输出
分析结果以及改进方案
最开始的《用途》章节中曾引出,depencency:analyze
插件会分析如下内容
- 使用的并且声明的依赖
- 使用的但是未声明的依赖
- 未使用的但是声明的依赖
我们需要根据分析结果进行改进优化:
使用的并且声明的依赖
该情况属于正常现象,在分析结果中也不会有任何体现。
使用的但是未编程客栈声明的依赖
编程客栈表示依赖的a.jar
又引用了其他的b.jar
,导致我们间接的依赖了b.jar
,但是我们并没有在pom.xml
中显示的进行依赖。这种情况是不推荐的,原因是我们可能在项目中了b.jar
的方法,万一哪天对a.jar
进行升级,而升级后的a.jar
不依赖了b.jar
,那么我们的程序就会报错。
改进办法就是显示的依赖b.jar
,如前面的例子中出现的
改进方案为在pom.xml
中添加对spring-jdbc
以及spring-tx
的依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.9.RELEASE</version> </depandroidendency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.1.9.RELEASE</version> </dependency>
未使用的但是声明的依赖
表示在pom.xml
中添加的依赖在实际程序中并没有用到
改进方案为移除无用的依赖,但是有一点除外,就是我们声明scope
为test
的依赖,也就是单元测试中使用到的,这些不能够移除。如
我们只能够将springboot
的依赖移除,因为在实际中并没有使用到,但是其余的以:test
结尾的依赖是不能移除的,在单元测试中会使用到他们
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论