Maven实战——生命周期和插件
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实战——生命周期和插件的更多相关文章
- Maven入门指南⑦:Maven的生命周期和插件
一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周期是抽象的,其中的具体任务都交由插件来完成.Mav ...
- Maven使用教程三:maven的生命周期及插件机制详解
前言 今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子. 后面还会总结一个 ...
- Maven的生命周期和插件
首先解释下maven build等 Maven build是这个插件让你自己去配置执行目标的.Maven clean 清除上一次Maven执行的结果Maven generate-sources会根据p ...
- Maven入门指南10:Maven的生命周期和插件
一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周期是抽象的,其中的具体任务都交由插件来完成.Mav ...
- Maven实战读书笔记(四):Maven生命周期与插件
Maven的生命周期是对所有构建过程的抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有构建步骤. Maven的生命周期是抽象的,其实际行为是由插件来完成 ...
- 深入理解maven及应用(一):生命周期和插件
在项目里用了快一年的maven了,近期突然发现maven项目在eclipse中build时很慢,由于经经常使用clean install命令来build项目,也没有管那么多,但近期实在受不了乌龟一样的 ...
- Maven学习总结(16)——深入理解maven生命周期和插件
在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b ...
- maven详解之生命周期与插件
Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...
- Maven学习(四)-- 生命周期和插件
标签(空格分隔): 学习笔记 Maven生命周期是抽象的,不做任何实际的工作,在Maven的设计中,实际的任务都交由插件来完成. 每个构件步骤都可以绑定一个或者多个插件行为,而且Maven为大多数构建 ...
随机推荐
- 重新开始学习javase_集合_Set
一,Set之HashSet(转:http://blog.csdn.net/zheng0518/article/details/42197337) 1. HashSet概述: HashSet实现S ...
- jQuery banner 滑动
jQuery(document).ready(function() { var abovePos = 50; var customMax = 1600; var zIdx = 100; var $bn ...
- MySQL 缓存 Query Cache
QueryCache(下面简称QC)是根据SQL语句来cache的.一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使 用QC.每个Cache都是以SQL文本作为key来存的.在应 ...
- Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果
windows phone中做动画其实很方便的,可以使用Blend拖来拖去就做出一个简单的动画,下面做了一个 ios屏幕小白点的拖动效果,包括速度判断移动 使用Blend生成以下代码 <Stor ...
- 分享Git的一些个人配置
先贴上自己.gitconfig的相关命令,我再具体说一下 diff.external=~/.git-meld.sh http.sslverify=false http.proxy=http://127 ...
- JVM内存管理及垃圾回收
一.JVM内存的构 Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法.总体分为下面几个部分: 程序计数器(Progra ...
- php解析json数据
<?php $data; $data.="["; for ($i=0;$i<20;$i++) { $data.="{"; $data.=" ...
- MongoDB学习--高级查询 [聚合Group]
Group大约需要一下几个参数. key:用来分组文档的字段.和keyf两者必须有一个 keyf:可以接受一个javascript函数.用来动态的确定分组文档的字段.和key两者必须有一个 initi ...
- python numpy 使用笔记 矩阵操作
(原创文章转载请标注来源) 在学习机器学习的过程中经常会用到矩阵,那么使用numpy扩展包将是不二的选择 建议在平Python中用多维数组(array)代替矩阵(matrix) 入门请考 http:/ ...
- iPhone 被同步到 Mac上后 如果不希望更新到Mac上在哪里删除?
前往文件夹 /Users/用户名/Library/Application Support/MobileSync 直接删除 就行了(同时要倾倒废纸篓). 目前iPhone链接Mac 后 不让 ...