maven学习系列5----插件
来源:互联网 发布:最好视频播放软件 编辑:程序博客网 时间:2024/06/07 19:11
生命周期
maven包含三套生命周期,每套生命周期中包含多个阶段,每套生命周期内的阶段有前后依赖关系,但是不同生命周期的阶段之间是相互独立的:
- clean:清理项目(主要是删除target目录下的内容)
- default:构建项目,包含编译、测试、安装(把编译出来的构建拷贝到本地仓库)、部署(拷贝到远程仓库)等几个主要阶段(详细参见附1default生命周期)
- site:建立和发布项目站点,Maven可以基于POM所包含的信息自动生成一个友好的站点,方便团队交流。这个对于团队开发比较有帮助,个人开发很少会使用。
插件
1,目标
maven只是定义了抽象的生命周期,具体的功能实现还是需要交由插件来完成(插件也是maven的一种构件)
每个插件都会包含多个目标,每个目标对应一个功能,这些可以通过查看插件相关信息来获取,写法:插件前缀:该插件目标。例如compiler:compile表示插件maven-compiler-plugin的compile目标。
生命周期与插件的目标相互绑定,来完成某个具体的构建任务。
2,插件内置绑定
为了能让用户几乎不用任何配置就能构建maven项目,maven在核心为一些主要的生命周期阶段绑定了很多插件的目标。如下分别对应三套生命周期的内置插件绑定。
3,自定义绑定
用户可以在pom.xml文件中配置将某个插件目标绑定到生命周期的某个阶段上(一般内置绑定已经够用),这种配置方法的常见的例子是拷贝项目的依赖包到target/lib/目录下,创建项目的源码jar包,内置的插件绑定关系中并没有涉及这些任务,因此需要用户自行配置。
例如想在verify阶段将项目的主代码打包成jar文件,就可以如下配置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>attach-source</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions></plugin>例如想在打包阶段拷贝项目的依赖包(主要用于构建可执行的jar包),可以如下配置
<plugin> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <!-- ${project.build.directory}为Maven内置变量,缺省为target --> <outputDirectory>${project.build.directory}/lib</outputDirectory> <!-- 表示是否不包含间接依赖的包 --> <excludeTransitive>false</excludeTransitive> <!-- 表示复制的jar文件去掉版本信息 --> <stripVersion>true</stripVersion> </configuration> </execution> </executions></plugin>
说明:
- 自定义绑定是在<execution/>标签中配置的
- <id/>标签配置自定义绑定任务的唯一ID
- <phase/>标签配置生命周期的阶段
- <goals/>标签配置插件的目标
- <configuration/>标签与<goals/>标签同级配置插件目标的参数,也可以和插件的坐标同级来配置插件的全局配置
4,命令行中执行
几种常见的命令行执行内置绑定的方法
- mvn clean:该命令调用clean生命周期的clean阶段
- mvn test:该命令调用default生命周期的test阶段(即从validate、initialize一直到test阶段)
- mvn clean install:该命令调用clean生命周期的clean阶段和default生命周期的install阶段(即从validate、initialize一直到install阶段)
- mvn clean deploy sit-deploy:谇命令调用命令调用clean生命周期的clean阶段、default生命周期的deploy阶段以及site生命周期的site-deploy阶段。
还可以直接用[插件前缀:插件目标]的方式来调用,如下
- mvn dependency:list:查看项目依赖的构件列表
5,eclipse中配置执行maven任务
在eclipse中右键点击maven项目名找到run里面会有maven的一些执行任务,如下所示
如果这些默认的执行任务不能满足要求,也可以选中上图中的第2个Maven build...,会出现如下配置,或在在goals中填入相应的任务即可,格式为:插件前缀:插件目标(例如compiler:testCompile),如果有参数也可以在下图第二个红框中添加,最后点击Run按钮即可。
6,插件仓库
与依赖构件一样,插件构件同样基于坐标存储在maven仓库中,不过插件仓库是单独仓库,在配置文件的<pluginRepositories/>标签中配置,如下
<pluginRepositories> <pluginRepository> <id>central</id> <name>Maven Plugin Repository</name> <url>https://repo1.maven.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository></pluginRepositories>
另外,如果在pom中配置的插件是maven官方插件的话,在<plugin/>配置中可以省略groupId,这是maven默认插件groupId是org.apache.maven.plugins,这就是maven官方插件的groupId。
7,插件信息查询
在命令行下进入到项目pom.xml所在目录,执行命令:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddeftail,其中粗体部分是需要查询的插件的坐标,需要在pom.xml中已经配置才可以查询到
还可以在线查询,maven官方插件列表在http://maven.apache.org/plugins/index.html页面找到。
附
附1,defalut生命周期:
- validate
- generate-sources
- process-sources
- generate-resources
- process-resources 复制并处理资源文件,至目标目录,准备打包。
- compile 编译项目的源代码。
- process-classes
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources 复制并处理资源文件,至目标测试目录。
- test-compile 编译测试源代码。
- process-test-classes
- test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
- prepare-package
- package 接受编译好的代码,打包成可发布的格式,如 JAR 。
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install 将包安装至本地仓库,以让其它项目依赖。
- deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
附2,常用插件列表
插件名称
用途
来源
maven –clean -plugin
清理项目
Apache
maven –compile -plugin
编译项目
Apache
maven –deploy -plugin
部署项目
Apache
maven –install -plugin
安装项目
Apache
maven –resources -plugin
处理资源文件
Apache
maven –site -plugin
生成站点
Apache
maven –surefire -plugin
执行测试
Apache
maven –jar -plugin
构建JAR项目
Apache
maven –war -plugiin
构建war项目
Apache
maven –shade -plugin
构建包含遗憾的JAR包
Apache
maven –changelog -plugin
生产版本控制变更报告
Apache
maven –checkstyle -plugin
生成checkStyle报告
Apache
maven –javadoc –plugin
生成JavaDoc文档
Apache
maven –jxr –plugin
生成源码交叉引用文档
Apache
maven –pmd –plugin
生成PMD报告
Apache
maven –project –info -reports –plugin
生成项目信息报告
Apache
maven –surefire –plugin
生成单元测试报告
Apache
maven –antrun –plugin
调用Ant任务
Apache
maven -archetype –plugin
基于Archetype生成项目骨架
Apache
maven –assembly –plugin
构建自定义格式的分布包
Apache
maven –dependency –plugin
依赖分析及控制
Apache
maven –enforcer –plugin
定义规则并强制要求遵守
Apache
maven –pgp –plugin
为项目构建生成PGP签名
Apache
maven -invoke –plugin
自动运行Maven项目构建并验证
Apache
maven –release –plugin
自动项目版本发布
Apache
maven –scm –plugin
集成版本控制系统
Apache
maven –source –plugin
生成源码包
Apache
maven –eclipse –plugin
生成Eclipse项目环境变量
Apache
jboss –maven –plugin
启动、停止Jboss,部署项目
Codehaus
properties –maven –plugin
从properties文件读写Maven属性
Codehaus
sql –maven –plugin
运行SQL脚本
Codehaus
tomcat –maven –plugin
启动、停止、部署项目
Codehaus
versions –maven –plugin
自动化批量更新POM版本
Codehaus
cargo –maven –plugin
启动/停止/配置各类Web容器自动化部署Web项目
Cargo
jetty –maven –plugin
集成jetty容器,实现快速开发测试
Eclipse
maven –gae –plugin
集成Google APP Engine
Googlecode
maven –android –plugin
构建Android项目
Googlecode
附3,参考
《maven实战》
http://juvenshun.iteye.com/blog/213959
http://www.cnblogs.com/tonychanleader/archive/2013/05/11/3072703.html
- maven学习系列5----插件
- Maven系列学习(5)-生命周期及插件
- Maven学习总结系列六:生命周期和插件
- maven学习-maven插件生命周期
- maven学习系列篇
- Maven系列三:生命周期和插件
- maven系列--eclipse的m2插件
- maven学习3:编写maven插件
- Maven学习4:编写maven插件补充
- Maven学习 (七) 自己动手编写Maven插件
- Maven学习 (七) 自己动手编写Maven插件
- maven学习--生命周期和插件
- Maven学习之 插件plugin
- Maven系列学习(1)-maven入门
- Maven学习系列--01Maven初相见
- Maven学习系列--03进一步了解Maven
- Maven学习系列--04Maven深入
- maven学习系列1----maven安装
- usaco stamp 邮票(dp)
- [Modern OpenGL系列(二)]创建OpenGL窗口
- POJ 3690(Constellations-矩阵hash)
- Java 自定义注解
- android XML数据解析详解
- maven学习系列5----插件
- HDU-ACM2052
- WMS仓库管理系统---(21)补货管理之补货下架
- 第四周编程题-念整数
- hdu1176 免费馅饼
- Hibernate hbm2java meta标签学习
- C++类设计
- Spark-Avro学习6之Ubuntu下安装
- 第五周编程题-分解质因数(看了很多别人的代码)