插件绑定

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

1. 内置绑定:bash

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

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

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

default生命周期与插件目标的绑定关系要复杂得多。这是由于对于任何项目来讲,例如jar项目和war项目,它们的项目清理和站点生成任务是同样的,不过构建过程会有区别。例如jar项目须要打包成jar包,而war项目须要打成war包。测试

因为项目的打包类型会影响构建的具体过程,所以default生命周期的阶段与插件目标的绑定关系由项目打包类型所决定。最多见最重要的打包类型是jar,它也是默认的打包类型。基于该打包类型的项目,其default生命周期的内置插件绑定关系及具体任务以下表所示:ui

default生命周期的内置插件绑定关系及具体任务(打包类型:jar):spa

生命周期阶段 插件目标 执行任务
process-resources maven-resources-plugin : resources 复制主资源文件至主输出目录
compile maven-compiler-plugin : compile 编译主代码至主输出目录
process-test-resources maven-resources-plugin : testResources 复制测试资源文件至测试输出目录
test-compile maven-compiler-plugin : testCompile 编译测试代码至测试输出目录    
test maven-surefire-plugin : test 执行测试用例
package maven-jar-plugin : jar 建立项目jar包
install maven-install-plugin : install 将项目输出构件安装到本地仓库
deploy maven-deploy-plugin : deploy 将项目输出构件部署到远程仓库

注意上表只列出了拥有插件绑定关系的阶段,default生命周期还有不少其余阶段,默认它们没有绑定任何插件,所以也没有任何实际行为。插件

咱们能够从Maven的命令行输出中看到在项目构建过程当中执行了哪些插件目标。命令行

2. 自定义绑定:

除了内置绑定外,用户还可以本身选择将某个插件目标绑定到生命周期的某个阶段上,这种自定义绑定方式能让Maven项目在构建过程当中执行更多更富特点的任务。

一个常见的例子是建立项目的源码jar包,内置的插件绑定关系中并无涉及这一任务,所以须要用户自行配置。maven-source-plugin能够帮助咱们完成该任务,它的jar-no-fork目标可以将项目的主代码打包成jar文件,能够将其绑定到default生命周期的verify阶段上,在执行完集成测试后和安装构件以前建立源码jar包,具体配置以下:

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-source-plugin</artifactId>
			<version>2.1.1</version>
			<executions>
				<execution>
					<id>attach-sources</id>
					<phase>verify</phase>
					<goals>
						<goal>jar-no-fork</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

它会建立一个以-sources.jar结尾的源码文件包。

有不少插件的目标在编写时已经定义了默认绑定阶段,可使用maven-help-plugin查看插件详细信息,了解插件目标的默认绑定阶段:

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1-Ddetail
相关文章
相关标签/搜索