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. C 符号

    语言的运算符可分为以下几类: 1 算术运算符 用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(或称模运算,%).自增(++).自减(–)共七种. 2.关系运算符 用于比较运算.包括 ...

  2. C语言

    HTML的学习早已落下帷幕,我们已经进入了C语言的学习,这段时间时间主要学了运算符.表达式.循环语句以及数组和字符串,感觉到了一种朦朦胧胧懂得尴尬. 运算符主要包括:算术运算符.赋值运算符.关系运算符 ...

  3. Redmi Note3 hennessy 刷机过程记录

    本文只是凭记忆,记录大致的步骤,提供线索. 准备 刷机包和supersu刷机包,到xiaomi.eu上下载, 如果是稳定版可能有锁bootloader,需要到下载解锁软件.开发版无锁 刷入recove ...

  4. NONUNIFORM MEMORY ACCESS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION In terms of commercia ...

  5. angular模块和组件之间传递信息和操作流程的方法(笔记)

    angular的模块之间,以及controller.directive等组件之间,是相对独立的,用以实现解耦合. 为实现相互之间传递信息及操作流程,有以下一些机制: 1.事件机制: $scope.$b ...

  6. UITextField-修改占位文字和光标的颜色,大小

    一.设置占位文字的颜色 方法一:利用富文本 /** 手机号输入框 */ @property (weak, nonatomic) IBOutlet UITextField *phoneTextField ...

  7. Husky or C++ API - HDFS Short-Circuit Local Reads

    hdfs-site.xml added: <property> <name>dfs.client.read.shortcircuit</name> <valu ...

  8. 关于移动app开发的一些不错的站点

    1. http://www.androiddevtools.cn      Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的A ...

  9. Spring MVC配置

    web配置 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="ht ...

  10. jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

    jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...