【精】讲透Maven-- Build Lifecycle, Phases和 Goals

本文深入解析Maven的构建生命周期,包括default、clean和site三种内置生命周期,以及phase和goal的概念。phase按顺序执行,goal是构建任务的最小单元,可以绑定到特定phase上。通过mvn命令,我们可以指定执行到哪个phase,所有之前的phase和其上的goal都会被执行。此外,一些goal不绑定到phase,可直接通过命令行执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven是个很强大的构建项目的工具,日常中大部分Java项目都是通过Maven来构建的。在看开源项目或者从0到1构建一个项目时,总会在pom.xml里遇到build标签、phase标签、goal标签等,那么build、phase、goal都是什么意思呢?本文就来尝试尽量讲透它们。

开始之前说个总结性质的结论,让大家在脑子先有个概念:maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)又会被一到多个goal绑定。goal是maven里定义任务的最小单元。

OK,那我们首先来说一下build lifecycle (build 生命周期)

当我们构建一个maven项目时,会根据pom.xml中的配置和mvn命令行选项执行一系列具体的任务。这些任务集合就组成了maven build lifecycle。

Maven内置了三种Build的生命周期:

  1. default: handles project build and deployment
  2. clean: handles project cleaning
  3. site: handles the creation of project site documentation

每一种build的生命周期都会经历一系列执行的阶段,这些阶段就是phases。举个例子,上面三种内置build中的default 的生命周期主要由以下phase组成:

  • validate
  • compile
  • test
  • package
  • verify
  • install
  • deploy

这些build phases按顺序执行。

idea maven 显示C:\Users\67854\.jdks\openjdk-23.0.2\bin\java.exe -Dmaven.multiModuleProjectDirectory=C:\Users\67854\Desktop\springboot-web-01\springboot-web-01 -Djansi.passthrough=true -Dmaven.home=D:\Macen\apache-maven-3.9.9-bin\apache-maven-3.9.9 -Dclassworlds.conf=D:\Macen\apache-maven-3.9.9-bin\apache-maven-3.9.9\bin\m2.conf "-Dmaven.ext.class.path=D:\IntelliJ IDEA 2024.3.4.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:D:\IntelliJ IDEA 2024.3.4.1\lib\idea_rt.jar=61443" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\Macen\apache-maven-3.9.9-bin\apache-maven-3.9.9\boot\plexus-classworlds-2.8.0.jar;D:\Macen\apache-maven-3.9.9-bin\apache-maven-3.9.9\boot\plexus-classworlds.license org.codehaus.classworlds.Launcher -Didea.version=2024.3.4.1 -P native [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.280 s [INFO] Finished at: 2025-03-24T01:51:54+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: pre-clean, clean, post-clean, validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the
最新发布
03-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据技术部落

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值