Maven解析2-生命周期详解
前言
maven官网:
Maven – Welcome to Apache Maven
菜鸟教程:
Maven仓库:
Maven Repository: Search/Browse/Explore (mvnrepository.com)
Maven官网定义:
生命周期与阶段
MAVEN默认以下三个标准的生命周期,同一个生命周期中的阶段(阶段代表了生命周期的特殊步骤)是有先后顺序的,并且后面的阶段依赖于前面的阶段:
下面列出了default、clean和site生命周期的所有阶段,它们按照在下表中定义的顺序执行的。当执行某个阶段,先执行其之前的所有阶段,然后执行该阶段。用连字符命名的阶段(pre-*、post-或process-)通常不会直接从命令行调用。它们履行的职责主要是生成一些中间产物等等。
1、clean
负责清理项目 含3个阶段
2、default
负责项目的构建、发布 含23个阶段
先了解几个重要的阶段:
validate 验证项目是正确的,所有必要的信息都是可用的
compile 编译项目源代码
test 使用单元测试框架测试编译后的源代码
package 获取已编译的代码,并将其打包为可发行的格式,例如JAR。
verify 获取已编译的代码,并将其打包为可发行的格式,例如JAR。
install 将包安装到本地仓库,供本地项目使用
deploy 将包发布到远程仓库(remote repository),方便其他开发人员和项目共享。
3、site
负责生成项目站点,即API文档信息网站 含4个阶段
如何运行生命周期中的阶段?
在执行MAVEN命令时,mvn命令之后使用的参数便是MAVEN的各个阶段。
mvn 阶段名
①. mvn compile:默认执行deault生命周期的compile之前的所有阶段(含compile阶段),共7个阶段。
②. mvn clean package:默认执行clean生命周期的clean之前的所有阶段(含clean阶段)和default生命周期package之前的所有阶段(含package阶段),共2 + 17个阶段。
总结:
在默认情况下 mvn install 和 mvn clean install 的执行流程是完全不一样的(对install插件重新配置和定义的除外)。不同一套的生命周期之间是相互独立的,其中的阶段并不会相互影响。
内置插件
关于内置插件相关可以参考: (37条消息) MAVEN简介_cloneme01的博客-CSDN博客_maven 发布时间
如何运行插件?
可使用“插件名:目标名”的形式直接运行某插件的某个目标。
mvn dependency:copy-dependencies:默认执行了dependency插件的copy-dependencies目标。
阶段和插件目标可以同时使用:
mvn clean dependency:copy-dependencies package:默认执行clean生命周期的clean之前的所有阶段(含clean阶段)、dependency插件的copy-dependencies目标、default生命周期package之前的所有阶段(含package阶段)。
插件仓库
关于项目依赖构件的仓库详解可以参照: (37条消息) MAVEN仓库<repositories>详解_cloneme01的博客-CSDN博客_maven repositories标签
与项目依赖构件一样,插件同样基于坐标存储在MAVEN仓库中,插件仓库使用pluginRepositories标签进行定义。MAVEN内置的插件仓库如下:
<pluginRepositories> <pluginRepository> <id>central</id> <name>Maven Plugin Repository</name> <url>http://repo1.maven.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
一般情况下中央仓库包含了常用的插件,无需再配置其他的插件仓库。当项目使用的插件无法在中央仓库找到,或者自己编写了插件,这个时候可以在pom.xml或者settings.xml中加入其他的插件仓库配置。
插件仓库的请求顺序
项目根据以下顺序获取项目需要的插件:
本地仓库 》》》 中央仓库(MAVEN缺省的远程插件仓库) 》》》 远程仓库
本文来自博客园,作者:chch213,转载请注明原文链接:https://www.cnblogs.com/chch213/p/16304058.html