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-compile-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称为插件目标。根据插件前缀定位插件坐标。

  1. 获取插件meta.xml信息。插件仓库的默认地址是http://repo1.maven.org/maven2/org/apache/maven/plugins。获取该目录下的maven-metadata.xml。
  2. 查找前缀对应的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>
  3. 确定好插件的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
  4. 所以实际执行的命令为

    mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree

maven生命周期和插件的更多相关文章

  1. [maven] 生命周期和插件

    maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...

  2. 05 Maven 生命周期和插件

    Maven 生命周期和插件 除了坐标.依赖以及仓库之外, Maven 另外两个核心概念是生命周期和插件.在有关 Maven 的日常使用中,命令行的输入往往就对应了生命周期,如 mvn package ...

  3. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  4. Maven系列学习(三)Maven生命周期和插件

    Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ...

  5. maven生命周期与插件

    目录 Maven生命周期 clean default site 命令与对应周期 插件与绑定 插件目标 插件绑定 内置绑定 自定义绑定 插件配置 本文主要是针对<maven实战>书中关键知识 ...

  6. (十二)Maven生命周期和插件

    除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期和插件.在有关Maven的日常使用中,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段packag ...

  7. Maven生命周期和插件机制

    Maven中的一个非常重要的概念是生命周期和插件,这篇文章重点介绍下Maven的生命周期. Maven的生命周期是抽象的,具体的功能是有具体的插件来完成的,Maven有相当多的功能插件,以至于Mave ...

  8. Maven生命周期(插件)

    maven拥有三套相互独立的生命周期,它们分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site 生命周期的目的是建立项目站 ...

  9. maven生命周期和插件详解

    生命周期 什么是生命周期? maven的生命周期就是对所有的构建过程进行抽象和统一.maven从大量项目和构建工具中总结了一套高度完善的.易扩展的生命周期.这个生命周期包含项目的清理.初始化.编译.测 ...

随机推荐

  1. Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION An SMP operating syst ...

  2. json转js对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. Sourceinsight最佳配色方案及颜色字体调整方法

    在Ubuntu下面用Gedit有一款比较好看的配色,应该是Darkblue.按照那个样子在SI里面做了一个差不多的,按个人喜好,背景色换成黑色,如下所示: 配色的方案文件可以从此处链接免费下载: 配色 ...

  4. iscoll制作顶部可以左右滑动的tab

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. oracle表大小

    查某一用户下的表 select SEGMENT_NAME,TABLESPACE_NAME,sum(BYTES/1024/1024)||'M'  from USER_extents where SEGM ...

  6. Sublime Text 2 JS 格式化插件 JsFormat的配置使用

    (转自http://www.jb51.net/softjc/178401.html) 这里下载这插件包 https://github.com/jdc0589/JsFormat ,点油下角的zip就能下 ...

  7. 原生js实现网页触屏滑动

    前言: 我有一个html格式的2048游戏,可以用键盘上下左右操作,但是放到手机上就抓瞎了.于是想修改一下代码,将键盘事件改成手机触屏事件. html5 的touch事件 html5支持touch事件 ...

  8. p6 备忘录

    1.报表执行过程:PROC_PM_RP_Implent,PROC_PM_RP_Implent 2.新增用户无法获取p6 计划,主要是因为没有项目信息.分类码授权(计划分类).

  9. java字典序全排列

    import java.util.Arrays; /** *字典序全排列 *字符串的全排列 *比如单词"too" 它的全排列是"oot","oto&q ...

  10. 奥威软件Speed-BI荣获2016年度中国大数据最佳云平台奖

    (原文转自:http://www.powerbi.com.cn/page110?article_id=210) 2016年12月16日,“科技原力觉醒,引领创新巅峰”—2016创新影响力年会暨国家产业 ...