1生命周期
maven有三个相互独立的生命周期:clean(清理项目),default(构建项目),site(建立项目站点)
每个生命周期包含一些阶段:
(1)clean
(2)default(只列出几个重要的阶段)
process-sources:处理项目主资源文件。一般是对src/main/resources目录的内容进行变量替换等工作后复制到项目输出的主classpath目录中。
compile:编译项目的主源码。编译src/main/java下的Java文件至项目输出的主class目录
process-test-sources:处理项目测试资源文件。对src/test/resources/目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
test-compile:
test:使用单元测试框架运行测试,测试代码不会被打包或部署
package:接受编译好的代码,打包成可发布的格式,如jar
install:将包安装到maven本地仓库,供本地其他maven项目使用
deploy:将最终的包复制到远程仓库,供其他开发人员和maven项目使用
(3)site:maven能够基于pom所包含的信息自动生成项目站点。
site:生成项目站点文档
site-deploy:将生成的项目站点发布到服务器上。
2命令行与生命周期
$mvn clean:执行clean生命周期的clean之前的阶段
$mvn test:执行default生命周期的test之前阶段
$mvn clean install:clean生命周期的pre-clean,clean阶段,default生命周期的从validate到install阶段
$mvn clean deploy site-deploy:clean生命周期的clean(之前)阶段,default生命周期的deploy阶段,site生命周期的site-deploy阶段
3插件目标(插件前缀:插件目标)
一个插件往往能完成多个功能,每个功能就是一个插件目标。
例如:maven-dependency-plugin
插件目标:dependency:analyze ,dependency:tree,dependency:list
maven-compiler-plugin,插件目标compiler:compile
maven-surefire-plugin,插件目标surefire:test
4插件绑定
maven生命周期与插件相互绑定,以完成实际的构建任务。例如default生命周期的compile阶段,与maven-compiler-plugin插件绑定,实现项目编译任务。
(1)内置绑定
maven为一些主要的生命周期阶段绑定了很多插件目标。
(2)自定义绑定
用户可以自己选择将某个插件目标绑定到生命周期的某个阶段。
例:创建项目源码jar包,内置的插件绑定关系中没有这一任务,需要用户自行配置。
maven-source-plugin的jar-no-fork目标能够将项目的主代码打包成jar文件,可以将其绑定到default生命周期的verify阶段上,在执行完成测试后和安装构件之前创建源码jar包。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId><!-- maven官方插件的groupId,官方插件可以省略 -->
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions><!-- 插件执行配置,它的每个execution子元素可以用来配置执行一个任务 -->
<execution>
<id>attach-sources</id><!-- 任务id为attach-sources -->
<phase>verify</phase><!-- 绑定到verify阶段 -->
<goals>
<goal>jar-no-fork</goal><!-- 任务要执行的插件目标 -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
有的插件编写时已经定义了默认绑定阶段,此时不配置phase也可,可以使用maven-help-plugin查看插件目标的默认绑定阶段。
运行命令如下:
$ mvn help:describe-Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1-Ddetail
注:将插件绑定到生命周期阶段,其执行順序由生命周期阶段的先后順序决定,当多个插件被绑定到同一个生命周期阶段,其执行順序由插件声明的先后順序决定。
5插件配置
(1)命令行插件配置
可以在maven命令中使用-D参数,并伴随一个参数键=参数值的形式。
参数-D是java自带的,其功能是通过命令行设置一个java系统属性,maven在准备插件的时候检查系统属性,便实现了插件参数的配置。
(2)pom中插件全局配置
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
配置maven-compiler-plugin编译java1.5版本的源文件,生成与jvm1.5兼容的字节码文件。
这种全局配置,所有使用该插件目标的任务,都会使用这些配置。
(3)pom中插件任务配置
为某个插件任务配置特定的参数。
插件全局配置,configuration元素位于plugin元素下面,而为某个插件任务配置的configuration元素则位于execution元素下。
6获取插件信息
(1)apache官方插件:
详细列表:http://maven.apache.org/plugins/index.html
下载:http://repo1.maven.org/maven2/org/apache/maven/plugins
(2)使用maven-help-plugin描述插件
$ mvn help:describe-Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1
$ mvn help:describe-Dplugin=groupId:artifactId:version
省去版本信息,获取最新版本描述:
$ mvn help:describe-Dplugin=groupId:artifactId
进一步简化,使用插件前缀替换坐标:
$ mvn help:describe-Dplugin=compiler
查看插件目标信息:
$ mvn help:describe-Dplugin=compiler-Dgoal=compile
输出更详细信息,可以加上detail参数:
$ mvn help:describe-Dplugin=compiler-Ddetail