当前位置: 首页 > news >正文

项目生命周期,重点是:构建、打包、发布分别是什么意思?

这是一个很核心的问题。项目的生命周期通常包含从编写代码上线运行的全过程。你提到的构建、打包、发布是其中的关键环节。

为了帮你理解,我用做一道菜来类比整个流程。

一、项目生命周期的主要阶段

一个标准的Java项目(特别是Maven项目)生命周期通常包含以下8个阶段:

阶段英文术语通俗解释(做菜类比)核心产出物
1. 编写代码Coding买菜、洗菜、切菜、配菜。.java源文件
2. 编译Compile把切好的生食材准备好。.class字节码文件
3. 测试Test尝一下菜的生熟、咸淡(单元测试)。测试报告 / 发现Bug
4. 打包Package把菜装进盘子里,摆盘。JAR / WAR 文件
5. 验证/检查Verify检查盘子有没有裂痕,摆盘是否符合标准。集成测试结果
6. 安装Install把这道菜存到自家的“菜谱库”里,供自己其他时候使用。本地仓库中的JAR
7. 发布/部署Deploy / Release把这道菜端到餐厅的菜单上,让所有顾客(其他项目/服务器)都能享用。远程仓库中的JAR / 运行在服务器上的进程
8. 运行/运维Run / Operate顾客开始吃菜,餐厅负责加菜、撤盘、处理投诉。提供服务的线上系统

二、核心概念的详细解释

下面重点解释你提到的构建、打包、发布,以及相关的几个概念。

1. 构建 (Build) —— 最宏观的概念

定义:从原始源代码开始,经过一系列步骤(编译、测试、打包、检查等),最终生成一个可交付产物的完整过程。

  • 包含内容:构建 ≠ 打包。构建是打包 + 编译 + 测试 + 检查等一系列操作的总和
  • 常用命令mvn clean packagemvn clean install
  • 一句话理解:把一堆.java文件变成可以扔给服务器运行的东西。
2. 打包 (Package) —— 整理汇总

定义:将编译后的.class文件和项目所需的资源文件(配置文件、静态页面、图片等)按照一定格式组织成一个压缩文件(JAR、WAR、EAR等)。

  • 产出物类型
    • JAR(Java Archive):普通Java应用或库。可以直接用java -jar xxx.jar运行(如果是可执行JAR)。
    • WAR(Web Archive):Web应用。需要放到Tomcat、Jetty等Web容器中运行。
    • EAR(Enterprise Archive):企业级应用。包含多个WAR/JAR,放到JBoss、WebLogic等应用服务器中运行。
  • 常用命令mvn package
3. 发布 (Release / Deploy) —— 分发交付

发布这个词有两个层面的意思,要根据语境区分:

  • 狭义发布(Deploy - 部署):把打包好的文件(如WAR/JAR)放到目标服务器上并启动,让程序真正跑起来对外提供服务。

    • 例如:把my-app.war复制到Tomcat的webapps目录下,然后启动Tomcat。
  • 广义发布(Release - 发布版本):把一个稳定版本的JAR包上传到Maven远程仓库(如公司私有仓库Nexus,或中央仓库Maven Central),让其他项目可以作为依赖引用

    • 注意:这里的发布不是“运行程序”,而是“分享库文件”。
    • 常用命令mvn deploy
4. 安装 (Install) —— 本地化存储

定义:将打包好的JAR/WAR文件复制到本地Maven仓库~/.m2/repository)中。

  • 作用:让你本机上的其他Maven项目可以通过<dependency>引用这个项目。
  • 与deploy的区别install是放到自己电脑的仓库里;deploy是放到团队/公共的远程仓库里。
  • 常用命令mvn install

三、Maven生命周期的具体体现

在Maven中,生命周期是按顺序执行的。你执行后面的阶段,前面的阶段会自动执行

例如

  • 你执行mvn package→ Maven会自动依次执行compiletestpackage
  • 你执行mvn install→ Maven会自动依次执行compiletestpackageinstall
  • 你执行mvn deploy→ Maven会自动依次执行compiletestpackageinstalldeploy

Maven的三个内置生命周期(每个生命周期又包含多个阶段):

  1. clean生命周期:清理项目(删除target目录)。
    • 阶段:pre-cleancleanpost-clean
  2. default生命周期:处理项目构建部署(最核心,包含上述1-7阶段)。
    • 主要阶段:compiletestpackageverifyinstalldeploy
  3. site生命周期:生成项目报告和站点文档。
    • 阶段:pre-sitesitepost-sitesite-deploy

四、总结对照表(让你更清晰)

你听到的说法准确含义产出的东西在哪常用命令
构建项目编译 + 测试 + 打包的统称项目target目录下mvn clean package
打包项目只做“将class文件归档为JAR/WAR”这一步项目target目录下mvn package
安装到本地打包后,把JAR放到本地的.m2仓库本地.m2/repositorymvn install
发布到远程打包后,把JAR上传到团队/公共的仓库服务器远程Nexus/Central仓库mvn deploy
部署到服务器把WAR/JAR放到应用服务器上并启动运行中的服务器进程(通常用Jenkins、脚本手动操作)

最后提醒:如果你的项目是一个最终运行的应用(比如一个网站后端),通常执行mvn package得到WAR/JAR,然后手动或通过脚本把它传到服务器上运行。mvn deploy更多是用来发布供其他项目使用的公共库(比如你写了一个工具类库)。

http://www.jsqmd.com/news/974879/

相关文章:

  • STM32 PID温度控制实战:从零开始构建你的智能温控系统
  • 性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
  • ViGEmBus虚拟游戏控制器驱动:终极完整指南与安装教程
  • 嵌入式串口通信:中断驱动环形缓冲区设计与C语言实现
  • 南京大学LaTeX论文模板:5分钟快速上手指南
  • 69.x的平方根
  • 5个常见游戏串流痛点:Sunshine开源方案如何彻底解决?
  • 如何在CS2中实现跨平台游戏增强:Osiris完整指南
  • MIFARE Ultralight AES安全芯片:低成本应用的AES-128与CMAC实战指南
  • Motorola 8位MCU SDK:硬件抽象与静态配置的嵌入式开发实践
  • 抖音视频批量下载神器:douyin-downloader 让你的收藏永不丢失
  • 天龙八部GM工具终极指南:一键掌握游戏数据管理的完整解决方案
  • Steam创意工坊下载终极指南:三步搞定跨平台模组获取
  • 3步快速找回压缩包密码:ArchivePasswordTestTool终极指南
  • Steam创意工坊跨平台模组下载技术架构解析
  • 小学期学习报告-4
  • Web Components主题热切换方案揭秘
  • DSP56311嵌入式音频均衡器:从IIR滤波器设计到EFCOP硬件加速实现
  • Magnet2Torrent:磁力链接到种子文件的自动化转换技术解决方案
  • 从68HC908MR24到MR32的嵌入式MCU升级:硬件兼容与软件迁移实战
  • 如何快速下载网页视频和音频:猫抓Cat-Catch浏览器扩展完整指南
  • m4s-converter:5分钟解锁B站缓存视频,让你的离线收藏重获新生!
  • 4大实战模块深度解析:Win11Debloat如何实现Windows系统精简与性能优化
  • DSP56301 HI32 PCI主控与Scatter/Gather DMA技术详解
  • 谷歌ads搜索广告叫什么名字?英语渣也能自己投的5个实操步骤
  • 汽车5G模块电源设计实战:基于NXP FS56 PMIC的AG55xQ供电方案
  • 3步搞定微信聊天记录永久保存:WeChatExporter的实用备份方案
  • 怎么知道员工有没有认真工作?上网行为审计软件帮你实时查看工作动态,不再猜测
  • 涨薪技术|Docker容器操作常用命令
  • 工业级遗传算法实战:选择压力、自适应变异与精英保留