咱们知道,Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的。插件以独立的构件形式存在,所以Maven的核心分发包很小,只有几M大小,Maven会在须要的时候下载并使用插件。maven
对于插件自己,为了可以复用代码,它每每可以完成多个任务。例如maven-dependency-plugin,它可以基于项目依赖作不少事情。它可以分析项目依赖,帮助找出潜在的无用依赖;它可以列出项目的依赖树,帮助分析依赖来源;它可以列出项目全部已解析的依赖等等。为每一个这样的功能编写一个独立的插件显然是不可取的,由于这些任务背后有不少能够复用的代码。所以这些功能汇集在一个插件里,每一个功能就是一个插件目标。插件
maven-dependency-plugin有十多个目标,每一个目标对应了一个功能,上述提到的几个功能分别对应的插件目标为dependency:analyze、dependency:tree、dependency:list。这是一种通用的写法,冒号前面是插件前缀,后面是该插件的目标。生命周期