这几天在整理maven项目的pom文件,有一个问题就是在pom文件中添加了依赖,但是本模块却没有使用。所以就会导致maven打包过大,出现很多冗余。搜索了资料,发现maven的插件可以帮助我们解决问题,接下来了解一下相关的知识。



一、认识maven插件

    maven本质上是一个插件框架,它的核心并不是执行具体的构建任务,所有这些任务都交给插件来管理。例如编译代码是由maven-plugin完成的。

如何安装?

两种方式:1,将插件目标和声明周期绑定,这样用户在命令行只是输入声明周期阶段而已。例如:maven默认将maven-comoplier-plugin的compile目标和compile生命周期绑定,因此命令mvn compile实际上是先定位到compile这样一生命周期内,然后在根据绑定关系调用maven-compiler-plugin的compile目标。2,直接在命令行指定要执行的插件目标。例如mvn archetype:generate就表示调用maven-archetype-plugin这个generate目标。(itoo中我看到的是使用第二种方法)



二、aven-dependency-plugin简介

    maven提供了很多插件,具有很多功能。具体可以查看:http://maven.apache.org/plugins/index.html

今天主要介绍一下如何利用aven-dependency-plugin分析jar依赖,以此来去掉那些不必要的依赖包。


aven-dependency-plugin最大的用途是帮助分析项目依赖,dependency:list能够列出项目最终解析到的依赖列表,dependency:tree能进一步的描绘项目依赖树,dependency:analyze可以告诉你项目依赖潜在的问题,如果你有直接使用到的却未声明的依赖,该目标就会发出警告。maven-dependency-plugin还有很多目标帮助你操作依赖文件,例如dependency:copy-dependencies能将项目依赖从本地Maven仓库复制到某个特定的文件夹下面。



三、如何使用插件


    在pom文件中直接添加上依赖,就算安装成功了。

    JavaITOO中安装了很多的插件,都在root下面,大家可以点击看一下。这样每个模块继承,所以子模块基本上是没有的。

maven添加依赖项 maven依赖管理插件_ci


四、如何使用maven插件分析jar依赖关系

1、分析依赖命令

命令:

mvn dependency:analyze

好,接下来我们在eclipse里面运行一下试试看。如下图:

maven添加依赖项 maven依赖管理插件_maven_02

运行结果如下:

maven添加依赖项 maven依赖管理插件_jar_03

    这里分析结果我们发现这个命令会将依赖分为两类:
    第一类:Used undeclared dependencies found
这个是指,某些依赖的包在代码中有用到它的代码,但是它并不是直接的依赖,也没有在pom中声明,是通过传递引入的一类包。例如上面的ITOO-tool:jar,一般都在parent中声明,子模块去继承。
    第二类:
Unused declared dependencies found
这个就是我们在pom中声明依赖了,但是在实际代码中并没有用到的包!也就是多余的包。
注意:这里说的实际代码没有用到,指的是在main/Java和test里没有用的,但是并不是意味着别的地方没有用到,所以在删除依赖的时候,要十分小心。例如我们在web.xml里面用到某些类,这个类依赖包A,这个maven是分析不出来的。参考资料,点击这里

2、mvn dependency:tree 命令
     maven-dependency-plugin最大的用途是帮助分析项目依赖,dependency:list能够列出项目最终解析到的依赖列表,dependency:tree能进一步的描绘项目依赖树,dependency:analyze可以告诉你项目依赖潜在的问题,如果你有直接使用到的却未声明的依赖,该目标就会发出警告。maven-dependency-plugin还有很多目标帮助你操作依赖文件,例如dependency:copy-dependencies能将项目依赖从本地Maven仓库复制到某个特定的文件夹下面。

maven添加依赖项 maven依赖管理插件_ci_04


小结:

项目驱动学习,对于maven的了解还是很少,逐步加深。