Chapter 10. 构建生命周期
10.1.1. 清理生命周期 (clean)
运行mvn clean将调用清理生命周期,它包含了三个生命周期阶段:
-
pre-clean -
clean -
post-clean
在每个生命周期阶段,你如果需要执行自己的任务或者通知可以使用插件maven-antrun-plugin
你也可以通过插件配置,改变原有生命周期阶段的任务例如
Example 10.2. 自定义Clean插件的行为
<project>
<modelVersion>4.0.0</modelVersion>
...
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>target-other</directory>
<includes>
<include>*.class</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
</project>
10.1.2. 默认生命周期 (default)
| 生命周期阶段 | 描述 |
|---|---|
| validate | 验证项目是否正确,以及所有为了完整构建必要的信息是否可用 |
| generate-sources | 生成所有需要包含在编译过程中的源代码 |
| process-sources | 处理源代码,比如过滤一些值 |
| generate-resources | 生成所有需要包含在打包过程中的资源文件 |
| process-resources | 复制并处理资源文件至目标目录,准备打包 |
| compile | 编译项目的源代码 |
| process-classes | 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement) |
| generate-test-sources | 生成所有包含在测试编译过程中的测试源码 |
| process-test-sources | 处理测试源码,比如过滤一些值 |
| generate-test-resources | 生成测试需要的资源文件 |
| process-test-resources | 复制并处理测试资源文件至测试目标目录 |
| test-compile | 编译测试源码至测试目标目录 |
| test | 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布 |
| prepare-package | 在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现) |
| package | 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR |
| pre-integration-test | 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境 |
| integration-test | 如果有必要的话,处理包并发布至集成测试可以运行的环境 |
| post-integration-test | 执行一些在集成测试运行之后需要的动作。如清理集成测试环境。 |
| verify | 执行所有检查,验证包是有效的,符合质量规范 |
| install | 安装包至本地仓库,以备本地的其它项目作为依赖使用 |
| deploy | 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关) |
10.1.3. 站点生命周期 (site)
Maven不仅仅能从一个项目构建软件构件,它还能为一个或者一组项目生成项目文档和报告。项目文档和站点生成有一个专有的生命周期,它包含了四个阶段:
-
pre-site
-
site
-
post-site
-
site-deploy
mvn site
10.2. 打包相关生命周期
绑定到每个阶段的特定目标默认根据项目的打包类型设置。一个打包类型为jar的项目和一个打包类型为war的项目拥有不同的两组默认目标。
常用的打包类型,jar,pom,manven-plugin,EJB,WAR,EAR.也可以使用插件支持其他项目的打包,例如swf
10.3. 通用生命周期目标
Chapter 11. 构建Profile
11.1. Profile是用来做什么的?
Profile能让你为一个特殊的环境自定义一个特殊的构建;profile使得不同环境间构建的可移植性成为可能。
构建可移植性!!!!!!!!!
一个构建的“可移植性”是指将一个项目在不同的环境中构建的难易度。
11.1.1.2. 环境可移植性!!!!
一个profile 几乎可以覆盖项目模型的所有内容
<project>
<profiles>
<profile>
<build>
<defaultGoal>...</defaultGoal>
<finalName>...</finalName>
<resources>...</resources>
<testResources>...</testResources>
<plugins>...</plugins>
</build>
<reporting>...</reporting>
<modules>...</modules>
<dependencies>...</dependencies>
<dependencyManagement>...</dependencyManagement>
<distributionManagement>...</distributionManagement>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<properties>...</properties>
</profile>
</profiles>
</project>
本文详细介绍了Maven构建工具中的三种主要生命周期:清理生命周期、默认生命周期和站点生命周期,并解释了每种生命周期下的各个阶段及其功能。此外,还介绍了如何通过配置自定义这些生命周期的行为。

被折叠的 条评论
为什么被折叠?



