Maven插件的获取和配置

  • 内容
  • 评论
  • 相关

通过《Maven生命周期和阶段详解》教程的学习,可以知道 Maven 只是对项目的构建过程进行了统一的抽象定义和管理。至于每个阶段由谁来做,Maven 自己不去实现,而是让对应的插件去完成。这就是插件的作用。

比如 maven-compile-plugin 就可以完成在 compile 阶段 Java 源代码的编译任务。

但是从插件本身来说,一个插件可以实现生命周期多个阶段的任务,比如 maven-dependency-plugin 就可以实现十多个功能:分析项目的依赖功能;列出项目的依赖树;分析依赖的来源等。

为方便指定执行插件的某个功能,将插件的每个功能叫目标。这样就可以实现在哪个阶段,执行哪个插件,达到哪个目标。比如“dependency:analyze”,表示 maven-dependency-plugin 的分析目标;“dependency:tree”表示 maven-dependency-plugin 列出依赖的目标。

插件同生命周期阶段的绑定

前面介绍了插件的作用和目标,但是最终的目的是要将插件的功能集成到 Maven 生命周期的相关阶段中去,让 Maven 构建工程时自动调用插件完成指定的任务。

应如何让 Maven 的生命周期同插件实现相互绑定,来完成实际的构建任务呢?

比如 maven-compile-plugin 插件的 compile 目标能完成编译任务,而且 Maven 的 default 生命周期的 compile 阶段,定义好要实现源代码编译。

那么用户怎样将 maven-compile-plugin 插件的 compile 目标绑定到 default 生命周期的 compile 阶段,让 Maven 构建项目到 compile 阶段的时候,能自动执行插件的 compile 目标呢?

实现生命周期的阶段同插件目标的绑定,一共有两种方式:内置绑定和自定义绑定。

1. 内置绑定

为了让用户方便使用 Maven,少进行配置甚至不用配置,就需要用 Maven 构建项目。Maven 在安装好后,自动为生命周期的主要阶段绑定很多插件的目标。

当用户通过命令或图形界面执行生命周期的某个阶段时,对应的插件目标就会自动执行,从而完成任务。

maven-clean-plugin 插件有个目标叫 clean,它的作用是删除项目构建时产生的输出目录。maven-clean-plugin 的 clean 目标,默认就绑定在 clean 生命周期的 clean 阶段。也就是说,当执行 mvn clean 时,Maven 在 clean 阶段自动调用 maven-clean-plugin 的 clean 目标,删除构建的输出目录。

同样地,maven-site-plugin 插件有两个目标:site 目标,用来生成项目站点;deploy 目标,用来将生成的站点发布到站点服务器上去。Maven 默认将 site 目标绑定在 site 生命周期的 site 阶段;将 deploy 目标绑定在 site 生命周期的 site-deploy 阶段。

default 生命周期就比较复杂了,不仅仅复杂在有那么多的阶段,还复杂在 Java 可以打成不同的包(jar、war 和 ear 等)。不同的包在不同的阶段是不一样的绑定。

当然,也可以通过运行 Maven 命令,在命令提示信息中查看阶段和插件目标的绑定。比如在 CMD 命令行窗口中输入 Maven compile,可以查看到如图1 日志。

运行日志
图 1  运行日志

本文标题:Maven插件的获取和配置

本文地址:https://www.hosteonscn.com/6320.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注