[Maven]关于Maven的生命周期与命令

发布时间 2023-12-01 16:16:35作者: knqiufan

关于Maven的生命周期与命令

工作的时候对Maven的install和package的使用产生了一些疑问,干脆将Maven的整个生命周期都复习总结一遍。

先看下在IDEA中Maven的生命周期节点:

clean

clean是清理命令,相当于执行了 mvn clean 命令。

清理当前工程编译后生成的文件,也就是删除整个target目录。

validate

相当于执行了 mvn validate 命令,对工程进行基础验证,如工程结构、pom、资源文件等是否正确,比如验证项目的目录结构是否规范,是否抱哈诺徐的源代码和资源文件等。

这一阶段的目的是为了确保项目的基础设置和配置是正确的,以便能够顺利执行后续的编译、测试、打包等构建任务。

compile

相当于执行了 mvn compile 编译命令, 作用是对项目中的源代码进行编译,把 src/main/java 目录下的java文件变异成.class文件,并把编译生成的.class文件放到target/classes目录下。

test

mvn test 命令,编译并执行了 src/test/java/目录下的所有测试用例。通常意味着使用了 @Test 注解标记的方法,以验证代码的正确性和稳定性。

package

将当前的项目打包,根据pom中的标签来判断打成什么类型的包。

项目打包指的是将项目的源代码、配置文件和依赖库等资源整合为一个可执行的文件或归档文件。打包完成的文件通常会被放置在target目录下,方便本地部署和项目运行。

verify

验证工程所有代码、配置进行是否正确,以及类中代码的语法检测等。

因为经过了编译打包,可能中间会出错,所以再检查一遍。

install

将当前的项目工程打包,并安装到本地仓库,以便其他人可以通过引入该项目的信息,也就是在pom中使用 dependency 标签来使用该项目。

install与package的区别在于,install会将项目打包好,再安装加入到本地仓库,而package只会将项目打包,在target文件夹下生成可执行文件,之后不会做其他操作

site

指的是生成项目的站点文档,其中包括项目概述、源码测试覆盖率报告、开发者列表等信息。不过站点文档的生成需要进行一些额外的配置和操作。

deploy

这个命令是将当前工程对应的包或者构建出来的产物上传到远程仓库中去,以便他人可以从该仓库获取并使用这些包。远程仓库可以是公共的残酷,比如说Maven中央仓库,也可以是私有的仓库,比如企业内部搭建的私服。

放一个生命周期示意图: