一篇文章带你了解Maven的生命周期
生命周期的定义
Maven的生命周期(lifecycle
)是对构建过程进行的抽象。
它包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
它将项目整体划分为一个个阶段,按顺序依次执行,也可以指定执行到某个阶段,然后结束。
因为Maven的生命周期是抽象的,因此它不做任何的实际工作,全部由插件(plugin
)完成。
生命周期的分类
Maven的默认插件
三个构建生命周期
Maven 的内部有三个标准生命周期,分别是 : clean, default, site
标准生命周期 | 作用 |
---|---|
clean | 项目清理 |
default(build) | 项目部署 |
site | 项目站点文档创建 |
生命周期与阶段
Maven将生命周期(lifecycle)
划分为一个个的阶段 (phase)
一系列顺序执行的阶段 (phase)
,构成一个完整的生命周期(lifecycle)
。
比如执行mvn clean
命令,该命令包含以下阶段:
pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上一次构建生成的文件
post-clean:执行一些需要在clean之后立刻完成的工作
这三个阶段按顺序全部执行完成后,才算完成了clean生命周期。
对于程序员来说,不用这么内卷,这个东西知道与否,对于程序开发完全没有影响
比如我,当我写完这篇博客,我就忘了maven的阶段是什么了。
clean生命周期
clean生命周期通过clean插件(自带)完成,功能是删除当前项目的target目录(可自行尝试)
site生命周期
site生命周期:程序员可以使用 Maven 提供的 maven-site-plugin
插件(该插件不是默认插件,需要引用
)让 Maven 生成一个 Web 站点, 以站点的形式发布信息。
pom.xml中添加以下内容
<build>
<plugins>
<!--添加 maven-site-plugin 插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
</plugins>
</build>
运行命令 mvn site
,界面如下:
可以看到,在target
文件夹下,生成了一个site
文件夹,这就是站点对应的文档信息。
打开site文件夹,点击网页,可以看到以下界面
都是一些依赖关系,文档描述的信息,和程序开发的关系不大。
default(build)生命周期
clean生命周期,只有一个阶段,点击clean插件即可完成。
site生命周期,和程序开发的关系并不大,作为一个程序员,我平时几乎用不到该生命周期。
三大生命周期中,和程序员关系最密切的 是 default(build)生命周期
default(build)生命周期
和程序开发息息相关,我认为还是有了解的必要。
default(build)生命周期各阶段详解
核心阶段 | 详解 |
---|---|
validate | 验证项目是否正确,所有必要信息是否可用(很少单独使用) |
compile | 编译项目的源代码(将src/main中的java代码编译成class文件,输出到targe目录下) |
test | 将单元测试的资源文件和代码进行编译,生成的文件位于target/test-classes (打包部署请跳过该阶段) |
package | 把class文件,resources文件打包成jar包(也可以是war包),生成的jar包位于target目录下 |
verify | 检查包是否有效(很少单独使用) |
install | 将jar部署到本地仓库,本地的其他模块依赖该jar包时,可以直接从本地仓库去获取 |
deploy | 将jar包部署到远端仓库,需要在maven的setting.xml中配置私服的用户名和密码,以及在pom.xml配置 |
<distributionManagement>
<repository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://localhost:8081/nexus/content/repository/myparty</url>
</repository>
<snapshotRepository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://localhost:8081/nexus/content/repository/myparty</url>
</snapshotRepository>
</distributionManagement>
不同于 clean生命周期和site生命周期都是单独的一个阶段,default(build)生命周期里面分为七个大阶段。
这七个大阶段是 顺序执行 的
指定某个生命周期的阶段
比如执行 mvn install
,会依次执行validate, compile, test, package, verify,最后执行 install 阶段,将jar包发布到本地仓库。
指定多个不同生命周期的阶段
执行 mvn clean deploy
命令,首先完成的 clean 生命周期,将以前构建的文件清理。
然后再执行 default lifecycle 的 validate, compile, test, package, verify, insstall, deploy 阶段,将 package 阶段创建的jar包发布到远程仓库中。