生命周期
每个生命周期包含一些阶段(phase),这些阶段是有顺序的,且后面的阶段依赖于前面的阶段。
以下面clean生命周期为例,
调用pre-clean阶段,仅执行pre-clean阶段。
调用clean阶段,依次执行pre-clean、clean。
调用post-clean阶段,依次执行pre-clean、clean、post-clean。
Maven三套独立生命周期:clean、default、site
注:()内为绑定在该阶段的内置插件
clean生命周期:
1)pre-clean执行一些清理前需要完成的工作。
2)clean (maven-clean-plugin:clean)清理上一次构件生成的文件。
3)post-clean执行一些清理后需要完成的工作。
default生命周期:
1)validate
2)initialize
3)generate-sources
4)process-sources 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
5)generate-resources
6)process-resources (maven-resources-plugin:resources)
7)compile (maven-compiler-plugin:compile)编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。
8)process-classes
9)generate-test-sources
10)process-test-sources 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量更换等工作后,复制到项目输出的测试classpath目录中。
11)generate-test-resources
12)process-test-resources (maven-resources-plugin:testResources)
13)test-compile (maven-compiler-plugin:testCompile)编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
14)process-test-classes
15)test (maven-surefire-plugin:test)使用单元测试框架运行测试,测试代码不会被打包或部署。
16)prepare-package
17)package (maven-jar-plugin:jar maven-war-plugin:war)接受编译好的代码,打包成可发布的格式,如:JAR、WAR
18)pre-integration-test
19)integration-test
20)post-integration-test
21)verify
22)install (maven-install-plugin:install)将最终的包复制到远程仓库,供本地其他Maven项目使用。
23)deploy (maven-deploy-plugin:deploy)将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。
site生命周期
1)pre-site 执行一些在生成项目站点之前需要完成的工作。
2)site (maven-site-plugin:site)生成项目站点文档。
3)post-site 执行一些在生成项目站点之后需要完成的工作。
4)site-deploy (maven-site-plugin:deploy)将生成的项目站点发布到服务器上。
命令行:
$mvn clean
调用clean生命周期的clean阶段。
$mvn test
调用default生命周期的test阶段。实际运行从validate到test所有阶段。
$mvn clean install
调用clean生命周期clean阶段和default生命周期install阶段。一般项目启动都用命令。
$mvn clean deploy site-deploy
调用clean生命周期的clean阶段、default生命周期deploy阶段、site生命周期的site-deploy阶段。
插件
Maven的核心仅定义了抽象的生命周期,具体的任务交由插件完成的。
插件以独立的构件形式存在,因此Maven的发布包只有不到3MB的大小,Maven会在需要的时候下载并使用插件。
插件仓库
一般使用Maven内置的插件远程仓库配置就够了,所以一般不用配置。内置插件远程仓库配置具体如下:
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
内置插件
上面已将三个生命周期内的内置绑定插件已写明。
自定义绑定
to_do
其他:
<plugin>
<groupId></groupId>
<artifactId></artifactIda>
<version></version>
<executions>
<execution>
<id></id>
<phase></phase>
<goals>
<goal></goal>
</goals>
<!-- 该特定任务的配置 -->
<configuration>
</configuration>
</execution>
</executions>
<!-- 该插件整体配置 -->
<configuration>
</configuration>
</plugin>