3.生命周期和插件
3.1 生命周期
Mavne拥有三套相互独立的生命周期:clear、default、site。
每个生命周期包含一些阶段(phase),这些阶段是有顺序的。
3.1.1 clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
pre-clean
clean
post-clean
3.1.2 default生命周期
定义了真正构件时,所需要执行的所有步骤,它是所有生命周期中最核心的部分。
validate
initialize
generate-sources
process-sources 处理项目主资源文件。(对src/main/resources目录内容进行变量替换,复制到项目输出的主classpath目录中)
generate-resources
process-resources
compile 编译项目的主源码。(编译src/main/java目录下的java文件至项目输出的主classpath目录中)
process-classes
generate-test-sources
process-test-sources 处理项目测试资源文件。(对src/test.resources目录的内容进行变量替换,复制到项目输出的测试classpath目录中)
generate-test-resources
process-test-resources
test-compile 编译项目的测试代码。(编译src/test/java目录下的Java文件至项目输出的测试classpath目录中)
process-test-classes
test 使用单元测试框架进行测试,测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如JAR。
integration-test
post-integration-test
verify
install 将包安装到Maven本地仓库,供本地其他Maven项目使用。
3.1.3 site生命周期
目的是建立和发布项目站点,包含如下阶段:
pre-site 执行一些在生成项目站点之前需要完成的工作。
site 生成项目站点文档。
post-site 执行一些在生成项目站点之后需要完成的工作。
3.1.4 命令行与生命周期
$mvn clean : pre-clean - clean。
$mvn test : default 周期到 test阶段之前所有阶段。
$mvn clean install : pre-clean - clean 和 default 周期到 test阶段之前所有阶段。
$mvn clean deploy site-deploy : pre-clean - clean 和 default 周期到 test阶段之前所有阶段 以及 site 所有阶段。
3.2 插件
3.2.1 生命周期和插件目标的对应关系
clean 生命周期
clean maven-clean-plugin:clean
default 生命周期
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 |
将项目输出构件部署到远程仓库 |
site 生命周期
site maven-site-plugin:site
site-deploy maven-site-plugin:deploy
3.2.2 自定义插件绑定
<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>
注: 绑定在default生命周期verify阶段绑, 打包源文件
3.2.3 maven-help-plugin的使用
执行mavne-help-plugin的describe目标。
$mvn help:describe -Dplugin=groupId:artifactId:version
$mvn help:describe
-Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1
去掉版本信息,查看最新版本
$ mvn help:describe
-Dplugin=org.apache.maven.plugins:maven-compiler-plugin
可以使用插件目标前缀替换坐标
$ mvn help:describe -Dplugin= compiler
仅仅描述摸个插件的目标信息,可以加上goal参数
$ mvn help:describe -Dplugin= compiler
-Dgoal=compile
加上detail参数输出更详细信息
$ mvn
help:describe -Dplugin= compiler -Ddetail
学习资料: 《maven实战》
(图片来源网络!)