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生命周期和插件简介_第1张图片

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

Maven生命周期和插件简介_第2张图片

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

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

Maven生命周期和插件简介_第3张图片

3.1.内置的绑定

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

Maven生命周期和插件简介_第4张图片

第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(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

你可能感兴趣的:(Maven生命周期和插件简介)