一篇文章带你了解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包发布到远程仓库中。

猜你喜欢

转载自blog.csdn.net/single_0910/article/details/121137042
今日推荐