Maven学习笔记(三)--生命周期和插件
2015-06-03 10:16
288 查看
Maven生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,实际任务由插件完成。
Maven有三套独立的生命周期:
clean生命周期--清理项目
default生命周期--定义了构建时执行的所有步骤
site生命周期--建立和发布项目站点
注:Maven各个生命周期都是独立的,但是一个周期内部的阶段是有依赖关系的。
插件绑定
默认绑定
clean与maven-clean-plugin:clean绑定,仅有clean这一个目标
site生命周期site阶段与maven-site-Plugin:site,deploy阶段和maven-site-Plugin:deploy绑定
default生命周期各阶段与插件目标绑定关系比较复杂。
compile阶段--maven-complier-plugin:compile
test阶段--maven-surefire-plugin:test
package阶段--maven-jar-plugin:jar
install阶段--maven-install-plugin:install
deploy阶段--maven-deploy-plugin:deploy
自定义绑定
用户可以自定义选择将某个插件绑定到某个生命周期上,<plugin></plugin>标签中指定
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<exexution>
<id>attach-source</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
查看插件默认的绑定阶段
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail
POM插件全局配置
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compile-plugin</artifactId>
<version></version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
POM插件中的任务配置
同一个插件绑定不同的任务阶段,可以执行不同的任务
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<executions>
<execution>
<id>ant-validate</id>
<phase>validate</phase>
<goals><goal>run</goal></goals>
<configuration>
<tasks><echo>I am bound to validate</echo></tasks>
</configuration>
</execution>
<execution>
<id>ant-verify</id>
<phase>verify</phase>
<goals><goal>run</goal></goals>
<configuration>
<tasks><echo>I am bound to verify</echo></tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
获取插件信息
1.在线获取--http://maven.apache.org/plugins/index.html
2.使用maven-help-plugin描述插件 mvn help:describe -Dplugin=org.apache.maven.plugins:maven-complier-plugin:2.1 -Dgoal=compile -Ddetail
插件解析机制
同依赖的远程仓库类似,插件也有自己的远程仓库。插件的远程仓库使用pluginRepositories和pluginRepository配置。
插件的默认groupId为: org.apache.maven.plugins (不推荐省略)
解析机制:如果是核心插件,超级POM中已经设定了版本。如果是非核心插件,未指定版本,maven会检查仓库中所有可用版本,做出选择。仓库元数据中记录了 插件的所有版本。maven3开始解析到release版本。
插件前缀:maven插件可以指定前缀<prefix>,默认groupidorg.apache.maven.plugins和org.codehaus.mojo两个,也可以通过settings.xml指定
<pluginGroups>
<pluginGroup>com.your.plugins</pluginGroup>
</pluginGroups>
===========================================
maven测试插件 maven-surefire-plugin 命令:mvn package -DskipTests
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>mave-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<includes>**/*Tests.java</includes>
<excludes>
<exclude>*ServiceTest.java</exclude>
<exclude>TempDaoTest.java</eclude>
</excludes>
<skipTests>true</skipTest> //跳过测试
</configuration>
</plugin>
默认情况下,target/surefire-reports目录下会生成两种格式的错误报告。
===========================================================
测试类重用:打包包含测试代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<goals><goal>test-jar</goal></goals>
</executions>
</plugin>
Maven有三套独立的生命周期:
clean生命周期--清理项目
default生命周期--定义了构建时执行的所有步骤
site生命周期--建立和发布项目站点
注:Maven各个生命周期都是独立的,但是一个周期内部的阶段是有依赖关系的。
插件绑定
默认绑定
clean与maven-clean-plugin:clean绑定,仅有clean这一个目标
site生命周期site阶段与maven-site-Plugin:site,deploy阶段和maven-site-Plugin:deploy绑定
default生命周期各阶段与插件目标绑定关系比较复杂。
compile阶段--maven-complier-plugin:compile
test阶段--maven-surefire-plugin:test
package阶段--maven-jar-plugin:jar
install阶段--maven-install-plugin:install
deploy阶段--maven-deploy-plugin:deploy
自定义绑定
用户可以自定义选择将某个插件绑定到某个生命周期上,<plugin></plugin>标签中指定
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<exexution>
<id>attach-source</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
查看插件默认的绑定阶段
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail
POM插件全局配置
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compile-plugin</artifactId>
<version></version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
POM插件中的任务配置
同一个插件绑定不同的任务阶段,可以执行不同的任务
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<executions>
<execution>
<id>ant-validate</id>
<phase>validate</phase>
<goals><goal>run</goal></goals>
<configuration>
<tasks><echo>I am bound to validate</echo></tasks>
</configuration>
</execution>
<execution>
<id>ant-verify</id>
<phase>verify</phase>
<goals><goal>run</goal></goals>
<configuration>
<tasks><echo>I am bound to verify</echo></tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
获取插件信息
1.在线获取--http://maven.apache.org/plugins/index.html
2.使用maven-help-plugin描述插件 mvn help:describe -Dplugin=org.apache.maven.plugins:maven-complier-plugin:2.1 -Dgoal=compile -Ddetail
插件解析机制
同依赖的远程仓库类似,插件也有自己的远程仓库。插件的远程仓库使用pluginRepositories和pluginRepository配置。
插件的默认groupId为: org.apache.maven.plugins (不推荐省略)
解析机制:如果是核心插件,超级POM中已经设定了版本。如果是非核心插件,未指定版本,maven会检查仓库中所有可用版本,做出选择。仓库元数据中记录了 插件的所有版本。maven3开始解析到release版本。
插件前缀:maven插件可以指定前缀<prefix>,默认groupidorg.apache.maven.plugins和org.codehaus.mojo两个,也可以通过settings.xml指定
<pluginGroups>
<pluginGroup>com.your.plugins</pluginGroup>
</pluginGroups>
===========================================
maven测试插件 maven-surefire-plugin 命令:mvn package -DskipTests
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>mave-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<includes>**/*Tests.java</includes>
<excludes>
<exclude>*ServiceTest.java</exclude>
<exclude>TempDaoTest.java</eclude>
</excludes>
<skipTests>true</skipTest> //跳过测试
</configuration>
</plugin>
默认情况下,target/surefire-reports目录下会生成两种格式的错误报告。
===========================================================
测试类重用:打包包含测试代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<goals><goal>test-jar</goal></goals>
</executions>
</plugin>
相关文章推荐
- hdu 4499 Cannon dfs
- [Ioi2011] ricehub
- KVO/KVC 实现机理分析
- 5月国内操作系统市场份额:Win 7第一 份额持续上涨
- AngularJS 单视图 view
- python处理二进制数据的方法
- 安卓Eclipse如何快速修改工程名及包名
- MySQL CURDATE() 函数
- 日经社説 20150603 この甘さでは個人情報は守れない
- 安卓Eclipse如何快速修改工程名及包名
- 绿衣
- listener.ora 、sqlnet.ora 、tnsnames.ora的关系以及手工配置
- PHP“Cannot use object of type stdClass as array”
- listview下拉刷新参考文章
- mysql导入source数据库sql的C++实现和封装
- "Selenium for Android"的Robotium 二 概述
- __FILE__,__LINE__
- EAN13条码在线生成器网址
- 44.手势识别器
- javascript学习笔记-1