[maven] 生命周期和插件
maven生命周期和插件
生命周期
maven的生命周期有三套,互相独立。每个生命周期含有不同阶段,常用如下
- clean 清理项目
- pre-clean 执行清理前需要完成的工作
- clean 清理上一次构建生成的文件
- post-clean 执行清理后需要完成的工作
- default 构建项目
- validate 验证项目正确,所有必需的信息都有
- initialize 初始化编译状态,例如创建target文件夹
- generate-source
- process-source 主资源文件变量替换,复制至主classpath目录
- generate-resources
- process-resources
- compile 编译主源码至主classpath目录
- process-classes
- generator-test-sources
- process-test-sources 测试资源文件变量替换,复制至测试classpath目录
- generate-test-resources
- process-test-resources
- test-compile 编译测试源码至测试classpath目录
- process-test-classes
- test 执行测试case,测试代码不会被打包
- prepare-package
- package 将编译好的代码打包成可发布的格式
- pre-integration-test
- integration-test
- post-integration-test
- verify 核实包是有效合规,达到质量标准
- install 将包安装到maven本地仓库
- deploy 将包复制到远程仓库
- site 构件站点
- pre-site
- site 生成项目站点文档
- post-site
- site-deploy 将生成的项目站点发布到服务器上
maven命令可以调用maven的生命周期阶段完成构建,不同生命周期无依赖,同一生命周期的阶段前后是有依赖的。
example:
mvn clean install site
插件
插件目标是插件对应的某一种功能,可以和maven生命周期的阶段绑定。
默认绑定
生命周期阶段 | 插件目标 |
---|---|
process-resources | maven-resource-plugin:resources |
compile | maven-compiler-plugin:compile |
process-test-resource | maven-resource-plugin:testResources |
test-compile | maven-compiler-plugin:testCompile |
test | maven-surefire-plugin:test |
package | maven-jar-plugin:jar |
install | maven-install-plugin:install |
deploy | maven-deploy-plugin:deploy |
自定义绑定
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach source</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
上面的代码创建了一个自定义的绑定,在verify
阶段绑定了maven-source-plugin:jar-no-fork
插件目标。作用是在verify阶段生成项目源码包,调用命令为maven verify
。
插件配置
命令行配置
使用-D
参数配置,例如mvn package -Dmaven.test.skip=true
pom文件配置
使用<plugin>
标签内的<configration>
配置,例如<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
上面的代码配置了compile插件编译1.8版本的源文件
描述插件
插件解析机制
maven命令也可以调用maven的插件目标来完成构建。
分析命令
mvn dependency:tree
插件的定位也需要三要素:groupid,artifactid,version。在上述命令中dependency
称为插件前缀,tree
称为插件目标。根据插件前缀定位插件坐标。
获取插件meta.xml信息。插件仓库的默认地址是http://repo1.maven.org/maven2/org/apache/maven/plugins。获取该目录下的maven-metadata.xml。
查找前缀对应的artifactid为
maven-dependency-plugin
,因为查得到所以确认groupid为org.apache.maven.plugins
,如果查不到则会去配置的其它仓库重复步骤1,所有配置的仓库均找不到则报错。<plugin>
<name>Apache Maven Dependency Plugin</name>
<prefix>dependency</prefix>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
确定好插件的groupid和artifactid,根据这两个信息查找插件的metadata.xml,地址为http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/maven-metadata.xml,版本信息即可确定,maven 3默认使用release版本,所以version为
2.10
所以实际执行的命令为
mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree
参考文档
Introduction to the Build Lifecycle
[maven] 生命周期和插件的更多相关文章
- maven生命周期和插件
maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...
- 05 Maven 生命周期和插件
Maven 生命周期和插件 除了坐标.依赖以及仓库之外, Maven 另外两个核心概念是生命周期和插件.在有关 Maven 的日常使用中,命令行的输入往往就对应了生命周期,如 mvn package ...
- MAVEN学习笔记之Maven生命周期和插件简介(3)
MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...
- Maven系列学习(三)Maven生命周期和插件
Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ...
- maven生命周期与插件
目录 Maven生命周期 clean default site 命令与对应周期 插件与绑定 插件目标 插件绑定 内置绑定 自定义绑定 插件配置 本文主要是针对<maven实战>书中关键知识 ...
- (十二)Maven生命周期和插件
除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期和插件.在有关Maven的日常使用中,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段packag ...
- Maven生命周期和插件机制
Maven中的一个非常重要的概念是生命周期和插件,这篇文章重点介绍下Maven的生命周期. Maven的生命周期是抽象的,具体的功能是有具体的插件来完成的,Maven有相当多的功能插件,以至于Mave ...
- Maven生命周期(插件)
maven拥有三套相互独立的生命周期,它们分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site 生命周期的目的是建立项目站 ...
- maven生命周期和插件详解
生命周期 什么是生命周期? maven的生命周期就是对所有的构建过程进行抽象和统一.maven从大量项目和构建工具中总结了一套高度完善的.易扩展的生命周期.这个生命周期包含项目的清理.初始化.编译.测 ...
随机推荐
- SCRIPT1010: 缺少标识符 常见原因
SCRIPT1010: 缺少标识符 ,一般是在IE下会出现这个问题. 今天在调试一段js代码时,在chrome,ff下均正常,但是在IE下就是一直这样的提示,出现这个问题的原因主要有以下几点: 1.出 ...
- WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider
1.Button protected override void OnNavigatedTo(NavigationEventArgs e) { /* * Button - 按钮控件,其全部功能是通过其 ...
- Android界面布局基本属性
在 android 中我们常用的布局方式有这么几种:1.LinearLayout ( 线性布局 ) :(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) ...
- 最近新装系统windows8.1+Mac。。。还没装驱动就遇到一堆问题。。。
---恢复内容开始--- 1,刚开始装好了,后来莫名看不到磁盘了,原因:64位mac盘会丢失盘符,所以macdrive也看不到...解决:(将AF改为06,修改内容后改回AF,早知道这么简单就不用重新 ...
- 下载安装与配置 Java JDK 7
1. 去 Oracle 的官网下载 JDK,我下载的是:jdk-7u25-windows-x64.exe 大小为:90.6M 2. 双击它安装. 3. 安装完后,JDK 配置如下: 01 02 - ...
- Clipping Magic – 帮助你轻松删除图片背景
Clipping Magic 让您轻松去除图片的背景,可以根据路径进行裁剪.操作很简单,只需拖动图像到放置区,或使用按钮选择文件.标记前景为绿,背景为红色,然后标记算法会帮助你处理好细节.处理后的图片 ...
- .net core 1.0 Web MVC 自定义认证过程
通过官方的介绍可知,若要本地开始部署搭建一个基于.net core 1.0的Web应用,需要下载dotnet SDK,或在Visual Studio IDE之上安装相关插件以布置开发环境.为了使开发环 ...
- struts2 s:if标签以及 #,%{},%{#}的使用方法
<s:if>判断字符串的问题: 1.判断单个字符:<s:if test="#session.user.username=='c'"> 这样是从session ...
- Manacher算法 - 求最长回文串的利器
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...
- P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1
P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1 May ...