Maven插件之Dependency:analyze

前言

完成新功能的开发后,在发包前组长告诉我要检查maven工程的依赖,并告诉我相关指令,此文记录一下使用方式

正文

简介

Maven官网之Dependency插件

Dependency插件提供了操纵artifact的能力,可以复制以及拆包本地或远程仓库的artifact到指定地点。

Dependency有很多的goal,这里介绍的是dependency:analyze

用途

用来分析项目的依赖并确定以下内容

  • 使用的并且声明的依赖
  • 使用的但是未声明的依赖
  • 未使用的但是声明的依赖

在文章最后的《分析结果以及改进方案》章节中会介绍具体的含义

使用方法

前提:保证电脑已经下载了Maven,以及已经配置好Maven的环境变量

通过命令行

  1. 打开命令行,进入Maven项目或模块的根目录,即包含pom.xml的目录(如果该目录不包含pom.xml则会报错)
  2. 执行以下指令
mvn dependency:analyze

等待执行完毕后,会看到类似如下输出
在这里插入图片描述

通过idea

  1. 点击idea右上方Add Configuration...按钮(不同版本之间可能有差异)
    在这里插入图片描述
  2. 在弹出窗口中点击左上角+,选择Maven
    在这里插入图片描述
  3. 指定项目路径Working directory为想要分析的Maven项目/模块。在命令行Command line中输入dependency:analyzeIDEA中执行Maven指令并不需要以mvn开头,IDEA会自动添加)
    在这里插入图片描述
  4. 点击IDE右上方的执行rundebug开始执行
    在这里插入图片描述
    等待执行完毕后,会看到类似如下输出
    在这里插入图片描述

分析结果以及改进方案

最开始的《用途》章节中曾引出,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>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>5.1.9.RELEASE</version>
</dependency>

未使用的但是声明的依赖

表示在pom.xml中添加的依赖在实际程序中并没有用到

改进方案为移除无用的依赖,但是有一点除外,就是我们声明scopetest的依赖,也就是单元测试中使用到的,这些不能够移除。如
在这里插入图片描述
我们只能够将springboot的依赖移除,因为在实际中并没有使用到,但是其余的以:test结尾的依赖是不能移除的,在单元测试中会使用到他们

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值