maven-生命周期与插件
Maven的生命周期是抽象的,具体的操作由插件实现,类似于java的模板设计模式。
1、生命周期

- 认识生命周期
maven有clean、default、site三种生命周期,每种生命周期都包含一些阶段,clean包含了pre-clean、clean、post-clean阶段;default生命周期包含了validate、compile、test、package、verify、install、deploy阶段;site生命周期包含了pre-site、site、post-site、site-deploy阶段。三套生命周期是互相独立的,每种生命周期的阶段是前后依赖的。执行某个阶段,则会先依次执行该生命周期的前面阶段。
- 命令行执行生命周期
mvn clean 仅执行clean生命周期的pre-clean和clean阶段
mvn test 执行default生命周期的validate、compile、test阶段
mvn clean package 执行clean生命周期的pre-clean和clean阶段以及default生命周期的validate、compile、test、package阶段
mvn clean install site-deploy 执行三种生命周期
2、插件详解
- 插件目标
maven中插件是以构件的形式存在。一个插件能完成好几个功能,每个功能对应插件的一个目标。比如插件maven-compiler-plugin可以完成以下compile、testCompile目标
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myapp ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\Users\zhpli\Desktop\myapp\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ myapp ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Users\zhpli\Desktop\myapp\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ myapp ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\Users\zhpli\Desktop\myapp\target\test-classes
[INFO]
- 插件绑定
maven生命周期与插件的某个目标绑定,执行具体的构建任务。比如compile生命周期与maven-compiler-plugin插件的compile目标绑定,执行编译任务。

a、maven内置绑定插件

b、自定义绑定插件
用户可以自己配置某个插件的某个目标绑定生命周期的某个阶段,让maven在构建项目时执行更多富有特色的任务。比如创建项目的源码jar包,内置插件没有涉及这一任务。maven-source-plugin插件的jar-no-fork目标能够将项目的主代码打包成jar文件,可以将该目标绑定到default生命周期的verify阶段上,即在执行完成测试后和安装构件之前创建源码jar包。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 插件配置
a、全局配置
该插件使用java1.8编译,并生成jvm1.8兼容的字节码文件。maven-compiler-plugin插件已经绑定的生命周期的阶段均使用该配置。
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration> 该插件的整体配置,各个目标均使用该配置
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
b、局部配置(任务配置)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>ant-validate</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration> 该插件目标的特有配置
<tasks>
<echo>I am bound verify phase</echo> 输出信息
</tasks>
</configuration>
</execution>
<execution>
<id>ant-verify</id>
<phase>verify</phase>
<goals>
<goal>run</goal>
</goals>
<configuration> 该插件目标的特有配置
<tasks>
<echo>I am bound verify phase</echo> 输出信息
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 插件解析机制
与依赖构件一样,插件构件同样基于坐标存储在Maven仓库中。不同于依赖配置远程仓库使用的repotitories及其repository子元素,插件的远程仓库使用pluginRepositories和pluginRepositoryp配置,其他配置与依赖配置远程仓库一致
略略...
maven-生命周期与插件的更多相关文章
- maven生命周期和插件
maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...
- [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从大量项目和构建工具中总结了一套高度完善的.易扩展的生命周期.这个生命周期包含项目的清理.初始化.编译.测 ...
随机推荐
- spark编程python实例
spark编程python实例 ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PyS ...
- linux常用指令集-持续更新...
0.查看所有java进程GC情况:for i in `jps|egrep -v "Jps|Launcher" |cut -d" " -f1`;do pwdx $ ...
- Servlet 2.5为cookie配置HTTPOnly属性
cookie的HTTPOnly属性,主要是用来防止JavaScript来读取cookie,默认情况下,JavaScript可以通过document.cookie来读取cookie,这样是很不安全的.通 ...
- win10安装mxnet cuda9.0-gpu版
类似于上一篇文章 Anaconda3.6 python3.6.5 cuda9.0+ cudnn7.0 安装MXNet 1.设置清华源 conda config --prepend cha ...
- Orchard Core 文档翻译 (二)代码生成模板 Code Generation Templates
Code Generation Templates 翻译原文:https://www.cnblogs.com/Qbit/p/9746457.html转载请注明出处 Orchard Core Templ ...
- June 13th 2017 Week 24th Tuesday
There are no regrets in life, just lessons. 人生中没有后悔,只有教训. Some people can learn from their past mist ...
- 【转载】#457 Converting Between enums and their Underlying Type
When you declare an enum, by default each enumerated value is represented internally with an int. (S ...
- 关于表空间、Schema和用户
数据库这个柜子 解释数据库.表空间.数据文件.表.数据的最好办法就是想象一个装满东西的柜子. 从物理方面来讲:数据库是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信 ...
- JQuery datatables 标题和内容居中显示
1.如题,使用到了强大的表格插件datatables,要使标题和内容都居中显示,只需要在jsp引入css,写上如下内容即可: /*qiulinhe:2016年11月7日13:48:26*/ /* da ...
- bootstrapTable refresh 方法使用简单举例
本文就bootstrapTable refresh 方法如何传递参数做简单举例说明. 下面代码中,一个table,一个button,单击button会触发刷新表格操作. <!DOCTYPE ht ...