Maven常见生命周期阶段的作用


一、生命周期阶段

1.clean

清理上一次构建生成的文件,通常是删除target/目录及其内容。
validate
验证项目是否正确以及所有必需的信息是否可用。此阶段默认什么也不做,但可以在子POM中配置插件来执行验证任务。

2.compile

编译项目的源代码。
通常是编译主代码(src/main/java)到target/classes目录。

3.test

使用适当的单元测试框架(如JUnit)运行测试。
在编译测试代码(src/test/java)之后执行。

4.package

将编译后的代码打包成可分发的格式,如JAR、WAR或EAR文件。
对于JAR包,会生成在target/目录下的.jar文件;对于WAR包,会生成.war文件,依此类推。

5.verify

运行任何检查以验证包是否有效且达到质量标准。
默认此阶段什么也不做,但可以在子POM中配置插件来执行验证任务。

6.install

将包安装到本地Maven仓库,以便本地其他Maven项目可以作为依赖使用它。
在执行install之前,会先执行package阶段(如果需要的话)。

7.site

生成项目站点文档。
通常使用Maven站点插件(Maven Site Plugin)来生成文档、报告和API文档等。

8.deploy

将最终的包复制到远程仓库,以便其他开发者或系统可以使用或依赖。
在执行deploy之前,会先执行install阶段(如果需要的话)。
Maven的生命周期是线性的,这意味着一个阶段的所有目标都被执行完毕后,下一个阶段的目标才会开始执行。例如,在test阶段的所有目标执行完毕后,package阶段的目标才会开始执行。

你可以使用Maven的命令行界面(CLI)来运行这些阶段,如mvn clean install,这将会执行clean和install阶段以及它们之前的所有阶段(validate、compile、test、package)。如果只运行mvn package,则只会执行到package阶段及其之前的阶段。

二、compile、package、install的区别

1.compile阶段:

目标:编译项目的源代码。
操作:此阶段会编译项目的主源代码(通常位于src/main/java目录下),并将编译后的字节码文件(.class文件)输出到项目的target/classes目录中。
依赖:在编译源代码之前,Maven会首先解析项目依赖,确保所有需要的库都已可用。
注意:compile阶段不会生成最终的分发包(如JAR、WAR等),只是将源代码编译成字节码。

2.package阶段:

目标:将编译后的代码打包成可分发的格式。
操作:此阶段会根据项目的packaging类型(在pom.xml中定义)来打包项目。例如,对于JAR项目,Maven会创建一个JAR文件;对于WAR项目,会创建一个WAR文件。这些文件通常位于项目的target/目录下。
依赖:在打包之前,Maven会先执行compile阶段(如果还没有执行的话),以确保所有的源代码都已经被编译。此外,Maven还会将所有项目依赖的库打包到最终的分发包中(对于JAR项目,通常会将依赖的库打包到target/lib目录或者将依赖包含在JAR文件的Class-Path中,具体取决于配置)。

3.install阶段:

install阶段在package阶段之后执行,因此它首先会完成打包的工作。
完成打包后,install阶段会将生成的包文件安装到本地Maven仓库中。
这样做的目的是让其他Maven项目能够引用这个包作为依赖,因为Maven在解析依赖时会首先查找本地仓库。
通过install,你可以确保本地开发的其他项目能够使用到最新版本的代码,而无需发布到远程仓库。

注意:package阶段会生成最终的分发包,这个包可以被部署到服务器或者作为其他项目的依赖。

4.compile和package的区别

总结来说,compile阶段主要负责将源代码编译成字节码,而package阶段则负责将编译后的代码和依赖打包成可分发的格式。这两个阶段在Maven的构建过程中是顺序执行的,package阶段会依赖于compile阶段的结果。

5.package和install的区别

简而言之,package仅仅是打包项目,而install则不仅打包项目,还将打包好的文件安装到本地Maven仓库中,以便其他项目可以引用。如果你只是想生成一个可分发的包而不打算在其他项目中使用它,那么执行到package阶段就足够了。如果你想在其他本地Maven项目中使用这个包,那么你需要执行到install阶段。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值