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. oracle 添加表分区

    alter table DF_WRITE_FILES_H add partition DF_WRITE_FILES_H96 values less than (201512) tablespace T ...

  2. Oracle10g、 Oracle11g完美共存

    Oracle10g. Oracle11g完美共存           环境描述 客户服务器上已经安装Oracle9i软件并部署多套数据库,现在客户要求安装Oracle11g软件,并且创建11g数据库, ...

  3. 02-测试、文件读写、xml解析

    测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试:function test 单元测试:unit test 集成测试:integration test 系统测试:syste ...

  4. php 4.X与5.x版本构造函数区别与类的继承

    今天看ecshop源码的时候发现 构造函数是和类名一样,以前没接触过,一下子疑惑啦 HP4.x 版本: PHP 4.x 的构造函数名与类名相同.        注意:在子类里父类的构造函数不会自动执行 ...

  5. Python几种创建list的方法的效率对比

    我们用 生成一个0到((1万倍n)-1)的list做例子 首先这种方式复杂度为平方级 ''' def test1(n): lst = [] for i in range(n*10000): lst = ...

  6. UVA 1600 Patrol Robot(机器人穿越障碍最短路线BFS)

    UVA 1600 Patrol Robot   Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   ...

  7. C# windows窗体程序打包安装及卸载

    一.新建安装部署项目

  8. iOS程序-UIScrollView的基本使用

    iOS程序-UIScrollView的基本使用 scrollView的几个属性contentSize contentOffset contentInset 1.不能向上滑动很可能是因为contentS ...

  9. iOS证书快要过期怎么办?

    说法一: 1.先revoke你的Certificate,重新生成一个新的. 2.Edit一下你的证书,选择新的Certificate. 3.下载覆盖之前的证书,就可以了. 这个帐号发布的产品不会受到影 ...

  10. c语言之函数指针

    一.基础研究 这里研究的内容是函数指针,需要我们在研究后构造程序来描述函数指针数组的用法和向函数传函数指针的方法. 指针有很多种:整型指针.结构体指针.数组指针等等,它们的本质是它们的值都是一个地址, ...