`
fw0124
  • 浏览: 5500 次
文章分类
社区版块
存档分类
最新评论

Maven的生命周期和插件

 
阅读更多

一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin。用户也可自行配置或编写插件。

1 . 三套生命周期

Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。

1 . 1 clean生命周期

1)pre-clean :执行清理前的工作;
2)clean :清理上一次构建生成的所有文件;
3)post-clean :执行清理后的工作

1 . 2 default生命周期

default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。

1)validate
2)initialize
3)generate-sources
4)process-sources
5)generate-resources
6)process-resources :复制和处理资源文件到target目录,准备打包;
7)compile :编译项目的源代码;
8)process-classes
9)generate-test-sources
10)process-test-sources
11)generate-test-resources
12)process-test-resources
13)test-compile :编译测试源代码;
14)process-test-classes
15)test :运行测试代码;
16)prepare-package
17)package :打包成jar或者war或者其他格式的分发包;
18)pre-integration-test
19)integration-test
20)post-integration-test
21)verify
22)install :将打好的包安装到本地仓库,供其他项目使用;
23)deploy :将打好的包安装到远程仓库,供其他项目使用;

1 . 3 site生命周期

1)pre-site
2)site :生成项目的站点文档;
3)post-site
4)site-deploy :发布生成的站点文档

2 . Maven的插件


Maven的核心文件很小,主要的任务都是由插件来完成。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件。
Maven官网上有更详细的官方插件列表。http://maven.apache.org/plugins/index.html

2 . 1 插件的目标(Plugin Goals)

一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。每个插件都有哪些个目标,官方文档有更详细的说明。
如执行mvn clean install命令时,调用的插件和执行的插件目标如下:

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ learning-java ---
[INFO] Deleting /_MyWorkSpace/ln/learning/learning-java/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learning-java ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learning-java ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 140 source files to /_MyWorkSpace/ln/learning/learning-java/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learning-java ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /_MyWorkSpace/ln/learning/learning-java/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learning-java ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ learning-java ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ learning-java ---
[INFO] Building jar: /_MyWorkSpace/ln/learning/learning-java/target/learning-java-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ learning-java ---
[INFO] Installing /_MyWorkSpace/ln/learning/learning-java/target/learning-java-1.0-SNAPSHOT.jar to /.m2/repository/learning/group/learning-java/1.0-SNAPSHOT/learning-java-1.0-SNAPSHOT.jar
[INFO] Installing /_MyWorkSpace/ln/learning/learning-java/pom.xml to /.m2/repository/learning/group/learning-java/1.0-SNAPSHOT/learning-java-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.920 s
[INFO] Finished at: 2015-12-23T16:32:33+08:00
[INFO] Final Memory: 17M/245M
[INFO] ------------------------------------------------------------------------


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

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

3 . 1 内置的绑定

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


第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式。Plugin 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>



转载文章,原文link=》http://www.cnblogs.com/luotaoyeah/p/3819001.html

分享到:
评论

相关推荐

    Maven3实战笔记04Maven的生命周期和插件

    Maven3实战笔记04——Maven的生命周期和插件。

    大话Maven生命周期

    Maven非常强大的重要原因是它有十分完善的生命周期模型 lifecycle 这个生命周期可以从两方面来理解 第一 顾名思义 运行Maven的每个步骤都由它来定义的 这种预定义的默认行为使得我们使用Maven变得简单 相比而言 Ant...

    Maven生命周期和及插件原理用法详解

    主要介绍了Maven生命周期和及插件原理用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值的相关资料

    Maven的生命周期阶段.docx

    Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、...Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。

    maven window下安装包

    第7章:生命周期和插件/7.4 插件绑定/7.4.2 自定义生命周期和插件的绑定 第7章:生命周期和插件/7.5 插件配置/7.5.1 命令行插件参数设置 第7章:生命周期和插件/7.5 插件配置/7.5.2 POM文件中进行插件参数设置 第7章...

    Maven:构建和管理Java项目Maven:构建和管理Java项目

    maven ...强调 Maven 的生命周期和插件机制,以及如何使用插件扩展 Maven 的功能。 第三部分:Maven 的优势和应用 探讨 Maven 在项目开发中的优势和受欢迎程度。解释 Maven 的模块化和标准化特点,

    Maven是一个项目管理工具,它包含了一个对象模型 一组标准集合,一个依赖管理系统 和用来运行定义在生命周期阶段中插件目标和逻辑

    Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,,这个pom.xml包我后面会叙述,不过已经学习过maven的 人... maven管理项目生命周期都是基于插件完成的

    Maven3实战视频教程(14集)

    课程目录: Maven3_01_maven概览 Maven3_02_maven安装的注意事项 ...Maven3_10_生命周期和插件简介 Maven3_11_插件基础 Maven3_12_插件的应用 Maven3_13_测试 Maven3_14_发布web项目 Maven3实战笔记 Maven配置

    chm版本Maven教程

    Maven 构建生命周期 Maven 构建配置文件 Maven存储库 Maven插件 Maven创建Java项目 使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 Maven构建自动化 Maven依赖管理 Maven自动化...

    apache-maven-3.9.5-bin windows 64bit x86下载

    3、项目生命周期管理:Maven提供了一系列的构建阶段(如编译、测试、打包、部署等),你可以在pom.xml中配置这些阶段的行为,Maven会按照定义好的生命周期来执行相应的操作。 4、插件系统:Maven支持插件机制,你...

    Maven原理和实践-培训课件.ppt

    何为Maven 构建,依赖管理,项目信息聚合 Maven核心概念 坐标,依赖,仓库,生命周期,插件 Maven最佳实践 创建、打包、发布、版本管理 项目实战 Nexus(Todo…) M2eclipse(Todo…)

    rserve-maven-plugin:用于 Rserve 生命周期的 Maven 插件

    rserve-maven-插件用于 Rserve 生命周期的 Maven 插件支持 rserve:start rserve:stop 和 rserve:run mojos。 Start 将启动 Rserve 并以最少的输出退出到 maven 控制台,stop 将停止并退出,run 将阻止并将调试信息...

    Maven Book (ZH)_ Maven权威指南.pdf

    System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你 用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的...

    xjar-maven-plugin:XJar-Maven-Plugin是对XJar的一个Maven插件封装,实现可通过Maven命令或绑定在Maven的生命周期之中执行,以更便捷的方式集成XJar

    XJar-Maven-Plugin是对的一个Maven插件封装,实现可通过Maven命令或绑定在Maven的生命周期之中执行,从而更加便捷的方式集成了 。 GitHub: : 什么是XJar XJar是基于对JAR包内部资源的加密以及扩展ClassLoader来...

    Maven2_资料分享

    包含:Maven2_基础教程.pdf\《Maven权威指南》-电子书下载(PDF)(中文)\maven2完全使用手册.docx\Maven3实战笔记04Maven的生命周期和插件.doc\Maven实战.pdf\Maven学习指南.pdf

    Maven 默认插件以及功能.docx

    面是执行 mvn clean install 产生的执行日志,通过日志可以看到每个步骤都显示 plugin 名称,版本号,生命周期阶段,执行操作等。 maven-clean-plugin:2.5:clean (default-clean) maven-resources-plugin:2.6:...

    maven课程讲义.doc

    关于maven的学习资料Maven是apache下的开源项目,项目管理工具,管理java项目。 1、项目对象模型 (Project Object Model) POM对象模型,每个maven工程中都有一个...5、maven 管理项目生命周期过程都是基于插件完成的

    maven3.2.5安装包下载

    Maven包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)。 安装步骤 先下载,下载完成后,解压到某个目录  ...

Global site tag (gtag.js) - Google Analytics