Maven的构建过程包含:初始化、编译、測试、打包、集成測试、部署

Maven拥有三套相互独立的生命周期:clean(清理项目)、default(构建项目)、site(建立项目网站)

每一个生命周期包含一些阶段,这些阶段是有顺序的,而且后面的阶段依赖于前面的阶段,以clean为例:

pre-clean:运行一些清理前须要完毕的工作

clean:清理上一次构建生成的文件

post-clean:运行一些清理后须要完毕的工作

site的生命周期包含:pre-site,site,post-site,site-deploy

命令行与生命周期

以Maven命令为例

mvnclean:调用生命周期的clean阶段,即为pre−clean和clean阶段 mvn test:调用default生命周期的test阶段

mvncleaninstall:调用clean生命周期的clean阶段和default生命周期的install阶段。 mvn clean deploy site-deploy:调用clean生命周期的clean阶段、default生命周期的deploy阶段。及site生命周期的site_deploy阶段,此为site生命周期的最后一个阶段

命令行插件配置

非常多插件目标的參数都支持从命令行配置,用户能够再Maven命令中使用-D參数,并伴随一个參数键=參数值的形式,来配置插件目标的參数。比如:

maven-surefire-plugin提供了一个maven.test.skip參数,当为true时就调过測试

$mvn install -Dmaven.test.skip=true

參数D是Java自带的。

POM中插件的全局配置

有些參数的值从项目创建到项目公布都不会改变,对于这样的情况在POM文件里一次性配置就比输入方便。比如我们一般会须要配置maven-compiler-plugin告诉他编译Java1.5版本号的源文件

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>

POM中插件任务配置

以maven-antrun-plugin为例,将maven-antrun-plugin:run绑定到多个生命周期阶段上,再加以不同的配置,就能够让Maven在不同的生命周期运行不同的任务。


<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>ant-validate</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>I'm bound to validate phase.</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>ant-verify</id>
<phase>verify</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>I'm bound to verify phase.</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

在上述代码中,首先,maven-antrun-plugin:run与validate阶段绑定。从而构成一个id为ant-validate的任务。插件全局配置中的configuration元素位于plugin元素以下,而这里的configuration元素则位于execution元素以下。表示这是特定任务的配置,而非插件总体的配置。这个ant-validate任务配置了一个echo Act任务。向命令行输出一段文字,表示该任务是绑定到validate阶段的。第二个任务的id为ant-varify。它绑定到了verify阶段,相同它也输出一段文字到命令行,告诉我们任务绑定到了verify阶段。

Maven实战——生命周期和插件的更多相关文章

  1. Maven入门指南⑦:Maven的生命周期和插件

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

  2. Maven使用教程三:maven的生命周期及插件机制详解

    前言 今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子. 后面还会总结一个 ...

  3. Maven的生命周期和插件

    首先解释下maven build等 Maven build是这个插件让你自己去配置执行目标的.Maven clean 清除上一次Maven执行的结果Maven generate-sources会根据p ...

  4. Maven入门指南10:Maven的生命周期和插件

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

  5. Maven实战读书笔记(四):Maven生命周期与插件

    Maven的生命周期是对所有构建过程的抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有构建步骤. Maven的生命周期是抽象的,其实际行为是由插件来完成 ...

  6. 深入理解maven及应用(一):生命周期和插件

    在项目里用了快一年的maven了,近期突然发现maven项目在eclipse中build时很慢,由于经经常使用clean install命令来build项目,也没有管那么多,但近期实在受不了乌龟一样的 ...

  7. Maven学习总结(16)——深入理解maven生命周期和插件

    在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b ...

  8. maven详解之生命周期与插件

    Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...

  9. Maven学习(四)-- 生命周期和插件

    标签(空格分隔): 学习笔记 Maven生命周期是抽象的,不做任何实际的工作,在Maven的设计中,实际的任务都交由插件来完成. 每个构件步骤都可以绑定一个或者多个插件行为,而且Maven为大多数构建 ...

随机推荐

  1. win7+SQL2008无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever

    今天在win7+SQL2008的环境下操作分离附加数据库,分离出去然后再附加,没有问题.但是一把.mdf文件拷到其它文件夹下就出错,错误如下:无法打开物理文件 "E:\db\MyDB.mdf ...

  2. 【转】教你爱上Blocks(闭包)

    Block 与传统代码相比较更加轻量,调用简洁方便,而且可以返回多个参数,使用Block可以让代码更加具有易读性,而我们在写回调时,也可以直接写在函数内部,而不用再去写一个回调函数 Block 闭包 ...

  3. Objective-C基础知识点总结

    一.#import 和 #include 的区别,@class代表什么?@class 和 #import 的区别?#import<> 和 #import""的区别 答: ...

  4. 使用Spring MVC,Mybatis框架等创建Java Web项目时各种前期准备的配置文件内容

    1.pom.xml 首先,pom.xml文件,里面包含各种maven的依赖,代码如下: <project xmlns="http://maven.apache.org/POM/4.0. ...

  5. 小波 mallat 算法

    算法要求:输入序列是大于滤波器长度的偶数列 确实可以通过编程的手段使算法适合所有的情况,但本文章的目的是展示mallat算法的过程,所以就一切从简了 // Mallat.cpp : Defines t ...

  6. undefined 和 null 的异同

    在javascript中,undefined和Null是两个比较特殊的值.但有时候在判断时就有点迷糊.依个人浅见,整理如下: 1.数据类型 众多周知,在javascript中存在五种基本类型,即und ...

  7. input, textarea,监听输入事件

    IE使用'propertychange'事件监听,其它浏览器使用'input'事件测试了IE7-10, Chrome, FF, 输入没有问题.♥但在IE9下,  删除,  回退,  Ctrl+X 没有 ...

  8. thinkphp 文件下载实例 实现以及注意事项

            #下载        function download()        {             $id=$_GET['id'];              $file_name ...

  9. curl 解析

    获得页面 使用命令:curl http://curl.haxx. se 这是最简单的使用方法.用这个命令获得了http://curl.haxx. se指向的页面,同样,如果这里的URL指向的是一个文件 ...

  10. 【学习笔记】【oc】指针

    1.取一个变量的值,可通过直接与间接的方式 直接:访问变量 间接:通过变量的内存地址来获取变量的值. 存放内存地址的变量就是指针变量. 2.定义指针变量的语法:类型* 变量名 &:取地址运算符 ...