开发者

Maven插件之Dependency:analyze的使用

目录
  • 前言
  • 正文
    • 简介
    • 用途
    • 使用方法
      • 通过命令行
      • 通过idea
    • 分析结果以及改进方案
      • 使用的并且声明的依赖
      • 使用的但是未声明的依赖
      • 未使用的但是声明的依赖
  • 总结

    前言

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

    正文

    简介

    Maven官网之Dependency插件

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

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

    用途

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

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

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

    使用方法

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

    通过命令行

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

    等待执行完毕后,会看到类似如下输出

    Maven插件之Dependency:analyze的使用

    通过idea

    点击idea右上方Add Configuration...按钮(不同版本之间可能有差异)

    Maven插件之Dependency:analyze的使用

    在弹出窗口中点击左上角+,选择Maven

    Maven插件之Dependency:analyze的使用

    指定项目路径Working directory为想要分析的Maven项目/模块。

    在命令行Command line中输入dependency:analyzeIDEA中执行Maven指令并不需要以mvn开头,IDEA会自动添加)

    Maven插件之Dependency:analyze的使用

    点击IDE右上方的执行rundebug开始执行

    Maven插件之Dependency:analyze的使用

    等待执行完毕后,会看到类似如下输出

    Maven插件之Dependency:analyze的使用

    分析结果以及改进方案

    最开始的《用途》章节中曾引出,depencency:analyze插件会分析如下内容

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

    我们需要根据分析结果进行改进优化:

    使用的并且声明的依赖

    该情况属于正常现象,在分析结果中也不会有任何体现。

    使用的但是未编程客栈声明的依赖

    编程客栈

    表示依赖的a.jar又引用了其他的b.jar,导致我们间接的依赖了b.jar,但是我们并没有在pom.xml中显示的进行依赖。这种情况是不推荐的,原因是我们可能在项目中了b.jar的方法,万一哪天对a.jar进行升级,而升级后的a.jar不依赖了b.jar,那么我们的程序就会报错。

    改进办法就是显示的依赖b.jar,如前面的例子中出现的

    Maven插件之Dependency:analyze的使用

    改进方案为在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中添加的依赖在实际程序中并没有用到

    改进方案为移除无用的依赖,但是有一点除外,就是我们声明scopetest的依赖,也就是单元测试中使用到的,这些不能够移除。如

    Maven插件之Dependency:analyze的使用

    我们只能够将springboot的依赖移除,因为在实际中并没有使用到,但是其余的以:test结尾的依赖是不能移除的,在单元测试中会使用到他们

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜