开发者

Maven插件之Dependency:analyze的使用

开发者 https://www.devze.com 2024-10-07 10:24 出处:网络 作者: 笔墨桑
目录前言正文简介用途使用方法通过命令行通过idea分析结果以及改进方案使用的并且声明的依赖使用的但是未声明的依赖未使用的但是声明的依赖总结前言
目录
  • 前言
  • 正文
    • 简介
    • 用途
    • 使用方法
      • 通过命令行
      • 通过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

    精彩评论

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

    关注公众号