标签:
maven包含三套生命周期,每套生命周期中包含多个阶段,每套生命周期内的阶段有前后依赖关系,但是不同生命周期的阶段之间是相互独立的:
maven只是定义了抽象的生命周期,具体的功能实现还是需要交由插件来完成(插件也是maven的一种构件)
每个插件都会包含多个目标,每个目标对应一个功能,这些可以通过查看插件相关信息来获取,写法:插件前缀:该插件目标。例如compiler:compile表示插件maven-compiler-plugin的compile目标。
生命周期与插件的目标相互绑定,来完成某个具体的构建任务。
为了能让用户几乎不用任何配置就能构建maven项目,maven在核心为一些主要的生命周期阶段绑定了很多插件的目标。如下分别对应三套生命周期的内置插件绑定。
用户可以在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>
几种常见的命令行执行内置绑定的方法
还可以直接用[插件前缀:插件目标]的方式来调用,如下
在eclipse中右键点击maven项目名找到run里面会有maven的一些执行任务,如下所示
如果这些默认的执行任务不能满足要求,也可以选中上图中的第2个Maven build...,会出现如下配置,或在在goals中填入相应的任务即可,格式为:插件前缀:插件目标(例如compiler:testCompile),如果有参数也可以在下图第二个红框中添加,最后点击Run按钮即可。
与依赖构件一样,插件构件同样基于坐标存储在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.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页面找到。
插件名称 |
用途 |
来源 |
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 |
《maven实战》
http://juvenshun.iteye.com/blog/213959
http://www.cnblogs.com/tonychanleader/archive/2013/05/11/3072703.html
标签:
原文地址:http://blog.csdn.net/itsenlin/article/details/51295667