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

等待执行完毕后,会看到类似如下输出
Maven插件之Dependency:analyze_第1张图片

通过idea

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

分析结果以及改进方案

最开始的《用途》章节中曾引出,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.springframeworkgroupId>
  <artifactId>spring-jdbcartifactId>
  <version>5.1.9.RELEASEversion>
dependency>
<dependency>
  <groupId>org.springframeworkgroupId>
  <artifactId>spring-txartifactId>
  <version>5.1.9.RELEASEversion>
dependency>

未使用的但是声明的依赖

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

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

你可能感兴趣的:(maven,maven,maven插件)