标签:
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