MAVEN-插件(一)

插件目标

Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的,插件以独立的构建形式存在,Maven会在需要的时候下载并使用插件。

对于插件本身,为了能够复用代码,它往往能够完成多个任务。例如maven-dependency-plugin, 它能够基于项目依赖做很多事情。 它能够分析项目依赖, 帮助找出潜在的无用依赖;它能够列出项目的依赖树,帮助分析依赖来源;它能够列出项目所有已解析的依赖等等。 为每个这样的功能编写一个独立的插件显然是不可取的,因为这些任务背后有很多可以服用代码,因此,这些功能聚集在一个插件里,每个功能就是一个插件目标。

maven-dependency-plugin有十多个目标,每个目标对应了一个功能,上述提到的几个功能分别对应插件的目标为dependency:analyze, dependency:tree 和 dependency-list。 这是一种通用的写法,冒号前面是插件前缀,冒号后面是该插件的目标。类似地, 还可以写出compiler:compile(这是maven-compiler-plugin的compile目标) 和 surefire:test(这是maven-surefire-plugin的test目标)。

插件绑定

Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言, 是生命周期的阶段与插件目标的相互绑定,以完成某个具体的构建任务。例如项目编译这一任务,它对应了default生命周期的compile 这一阶段,而maven-compiler-plugin这一插件的compile目标能够完成该任务。因此,将它们绑定,就能实现项目编译的目的。

内置绑定

为了能让用户几乎不用任何配置就能构建Maven项目,Maven的核心为一些主要的生命周期阶段绑定了很多插件的目标。当用户通过命令行调用生命周期阶段的时候, 对应的插件目标就会执行相应的任务。

clean 生命周期仅有 pre-clean, clean 和 post-clean 三个阶段, 其中的clean 与 maven-clean-plugin:clean绑定。 maven-clean-plugin仅有clean这一目标, 其作用就是删除项目的输出目录。

site 生命周期有pre-site , site , post-site 和 site-deploy 四个阶段, 其中, site 和 maven-site-plugin:site 相互绑定, site-deploy 和 maven-site-plugin:deploy相互绑定。 maven-site-plugin有很多目标,其中, site目标用来生成项目站点, deploy目标用来将项目站点部署到远程服务器上。 

相对于clean 和 site生命周期来说,default生命周期与插件目标的绑定关系就显得复杂一些。 这是因为对于项目来说,例如jar项目和war项目, 它们的项目清理和站点生成任务是一样的,不过构建过程会有区别。例如jar项目需要打成JAR包,而war项目需要打成WAR包。

由于项目的打包类型会影响构建的具体过程,因此,default生命周期的阶段与插件目标的绑定关系由项目打包类型决定,打包类型是通过POM中的packaging元素定义的。最常见,最重要的打包类型是jar, 它是默认的打包类型。基于该打包类型的项目, 其default生命周期的内置插件绑定关系及任务如下所示。

注意,上表中只列出了拥有插件绑定关系的阶段,default生命周期还有很多其他阶段,默认它们没有绑定任何的插件,因此也没有任何实际行为。

default生命周期与插件目标的绑定关系可参阅Maven官方文档:

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings

注: 摘取自《Maven实战》

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值