Java Maven

3.生命周期和插件

3.1 生命周期


Mavne拥有三套相互独立的生命周期:cleardefaultsite

每个生命周期包含一些阶段(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项目使用。

deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。



3.1.3 site生命周期


目的是建立和发布项目站点,包含如下阶段:

pre-site 执行一些在生成项目站点之前需要完成的工作。

site 生成项目站点文档。

post-site 执行一些在生成项目站点之后需要完成的工作。

site-deploy 将生成的项目站点发布到服务器上。



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-plugindescribe目标。

$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实战》

(图片来源网络!)





转载请指明出处!http://www.miselehe.com/article/view/10