maven生命周期
maven生命周期是抽象的,其实际行为都由插件来完成,maven拥有三套相互独立的生命周期,分别为clean、default、site,其中clean负责清理项目,default负责构建项目,site负责建立项目站点。每个生命周期包含一些阶段(phase),阶段有顺序,后面的阶段依赖于前面的阶段
clean生命周期
clean包含三个phase
pre_clean 执行清理前的准备工作
clean 清理上一次构建生成的文件
post_clean 执行一些清理后需要完成的工作
default生命周期
default包含构建的所有执行的步骤,重点阶段说明如下
process_sources 处理项目主资源文件,src/main/resources目录的内容变量替换,复制输出到主classpath
compile 编译项目的主源码,src/main/java目录的java文件至主classpath
process-test-sources 处理项目测试资源文件
test-compile 编译项目的测试代码
test 运行测试,测试代码不会被打包或部署
package 打包编译好的代码成可发布的格式
insatll 安装包至maven本地仓库
deploy 部署包至远程仓库
site生命周期
site生命周期的目的是建立和发布项目站点
pre-site 执行生成站点前期工作
site 生成项目站点文档
post-site 执行生成站点后期工作
site-deploy 将生成的站点发布到服务器上
命令行执行生命周期
从命令行执行mavne任务的最主要方式就是调用maven的生命周期阶段#mvn clean
该命令调用clean周期的clean阶段,实际执行的阶段为clean周期的pre-clean和clean两个阶段
#mvn test |
#mvn clean install |
#mvn clean deploy site-deploy |
生命周期与插件目标
- maven生命周期的阶段与插件相互绑定,用以完成实际的构建任务。未简化配置maven周期阶段默认内置绑定了很多插件目标,例
- 自定义绑定插件目标
```shell
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
#execution元素配置执行id为attach-sources的任务
<execution>
<id>attach-sources</id>
<phase>verify</phase>
#phase元素配置将插件绑定到verify生命周期
<goals>
<goal>jar-no-fork</goal>
</goals>
#goal元素配置执行的插件目标
</execution>
</executions>
</plugin>
</plugins>
</build>
然后执行命令- 插件的配置
命令行配置,可由java自带的-D参数设置,例```mvn install -Dmaven.test.skip=true```,该条命令意思是maven-surefire-plugin插件提供了一个maven.test.skip参数,为true时跳过测试。
插件也可全局配置如下
```shell
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
#如该插件是mavne官方插件,groupId配置可省略,不推荐
<artifactId>maven-compile-plugin</artifactId>
#插件版本最好显示设置,解析到最新版本和之前的版本可能发现变化,导致构建失败
<version>2.1.1</version>
#confiuration元素全局配置,基于java1.5版本编译
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
- 解析插件前缀
插件前缀与groupId:artifactId一一对应的,这种对应关系存储在仓库元数据中。仓库元数据为artifactId/maven-metadata.xml文件,maven解析插件仓库元数据时,会默认使用org.apache.maven.plugins和org.codehaus.mojo两个groupId,也可自定义配置settings.xml上的groupId上的插件仓库元数据,maven不仅仅会检查org/apache/maven/plugins/artifactId/maven-metadata.xml和org/codehaus/mojo/artifactId/maven-metadata.xml两个官方文件,还会检查用户自定义配置com/your/plugins/maven-metadata.xml