您的位置:首页 > 其它

Maven生命周期和插件简介

2015-11-08 00:00 190 查看
摘要: Maven生命周期和插件简介

一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。

1.生命周期

Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)

clean

pre-clean:执行一些需要在clean之前完成的工作

clean:移除所有上一次构建生产的文件

post-clean:执行一些需要在clean之后立刻完成的工作

default

validate

generate-source

process-source

generate-resources

process-resources:复制并处理资源文件,至目标目录,准备打包

comile:编译项目的源代码

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources:复制并处理资源文件,至目标测试目录

test-compile:编译测试源代码

process-test-classes

test:使用合适的但愿测试框架进行测试。这些测试代码不会被打包或部署。

prepare-package

package:接受编译好的代码,打包成可发布的格式,入jar。

pre-integration-test

integration-test

post-integration-test

verify

install:将包安装至本地仓库,以让其他项目依赖。

deploy:将最终的包复制到远程的仓库,以让其他开发人员与项目共享。

site

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

site:生成项目的站点文档。

post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署作准备。

site-deploy:发布生成的站点文档

2.插件

Maven的核心文件很小,主要的任务都是由插件来完成。定位到:%本地仓库%\org\apache\maven\plugins。

2.1.插件的目标

一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。



每个插件都有哪些个目标,官方文档有更详细的说明:Maven Plugins



3.将插件绑定到生命周期

 Maven的生命周期是抽象的,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。如:将maven-compiler-plugin插件的compile目标绑定到default生命周期的compile阶段,完成项目的源代码编译:



3.1.内置的绑定

 Maven对一些生命周期的阶段(phase)默认绑定了插件目标,因为不同的项目有jar、war、pom等不同的打包方式,因此对应的有不同的绑定关系,其中针对default生命周期的jar包打包方式的绑定关系如下:



第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式。

3.2.自定义绑定

用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包,生成如:ehcache-core-2.5.0-sources.jar形式的源码包。

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-source</id>
<phase>package</phase><!-- 要绑定到的生命周期的阶段 -->
<goals>
<goal>jar-no-fork</goal><!-- 要绑定的插件的目标 -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
……</build>

4.插件配置

Maven插件高度易扩展,可以方便的进行自定义配置。如:配置maven-compiler-plugin插件编译源代码的JDK版本为1.7:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration></plugin>

5.插件仓库

跟其他构件一样,插件也是根据坐标存储在Maven仓库中。超级POM中Maven配置的默认插件远程仓库如下:

<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository></pluginRepositories>

备注:本篇文章内容主要来自http://www.cnblogs.com/luotaoyeah/p/3819001.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息