第9章 maven的插件和生命周期
本章介绍了maven生命周期、插件以及如何配置插件
9.1 生命周期
一般的项目都会经历这几个步骤:编译,测试,打包,部署,有些公司是手动方式,有些是自动化脚本方式,虽然方式类似,但不可能完全相同。maven对这些工作进行抽象和统一,总结了一套完善的生命周期。
9.1.1 三套生命周期
maven的三套生命周期分别是:clean
、default
、site
,每个周期都分为多个阶段。
9.1.2 clean生命周期
1、pre-clean:执行清理前需要完成的工作
2、clean:清理上一次构建生成的文件
3、post-clean:执行清理后需要完成的工作
9.1.3 default生命周期
1、 validate:验证工程是否正确,所有需要的资源是否可用。
2、 compile:编译项目的源代码。
3、 test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4、 package:把已编译的代码打包成可发布的格式,比如jar。
5、 integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6、 verify:运行所有检查,验证包是否有效且达到质量标准。
7、 install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8、 Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
9.1.4 site生命周期
1、 pre-site:生成项目站点之前需要完成的工作
2、 site:生成项目站点文档
3、 post-site:生成项目站点之后需要完成的工作
4、 site-deploy:将项目站点发布到服务器上
9.2 插件
maven仅仅定义了抽象的生命周期,具体的任务交给插件来完成。插件以独立的构件形式存在。
9.2.1 内置绑定
为了能让用户不需要配置快速的构件项目,maven在核心为一些主要的生命周期阶段绑定了很多插件的目标,当用户通过命令行调用生命周期阶段的时候,对应的插件目标就会执行相应的任务。
- clean生命周期阶段与插件目标的绑定关系
生命周期阶段 | 插件目标 |
---|---|
pre-clean | |
clean | maven-clean-plugin:clean |
post-clean |
- site生命周期阶段与插件目标的绑定关系
生命周期阶段 | 插件目标 |
---|---|
pre-site | |
site | maven-site-plugin:site |
post-site | |
site-deploy | maven-site-plugin:deploy |
- default生命周期与内置插件绑定关系
生命周期阶段 | 插件目标 | 执行任务 |
---|---|---|
process-resources | maven-resources-plugin:resources | 复制主资源文件至主输出目录 |
compile | maven-compile-plugin:compile | 编译主代码至主输出目录 |
process-test-resources | maven-resources-plugin:testRresources | 复制测试资源文件至测试输出目录 |
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 | 将项目输出构件部署到远程仓库 |
9.2.2 插件配置
插件配置分为命令行和pom文件配置,本文只介绍pom文件配置插件。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
以上代码配置了maven-compiler-plugin插件,指定编辑版本为JDK1.7
9.2.2 更多插件
更多插件请访问maven插件官网:http://maven.apache.org/plugins/index.html