根据图片理解maven

maven 是一款强大的项目管理与构建工具,在 Java 开发中尤为常用,结合这张图,从核心功能、仓库体系、工作流程三方面快速了解:

一、核心作用

  • 项目构建:自动完成编译、测试、打包、部署等流程(比如把 .java 编译成 .class、打成 jar/war 包 )。
  • 依赖管理:帮你 “自动找 jar 包”,不用手动下载、复制粘贴,通过简单配置就能引入框架(如 Spring、MyBatis )。

二、仓库体系(重点)

Maven 用三级仓库管理 jar 包,流程像 “接力赛”:

  1. 本地仓库(蓝色):你电脑里的一个文件夹(比如 C:\Users\用户名\.m2\repository ),存下载好的 jar 包,优先查找,避免重复下载。
  2. 远程仓库(私服)(绿色):公司 / 团队自己搭的私有仓库(可选),用于存内部框架、公共组件,团队协作时用
  3. 中央仓库(粉色):Maven 官方维护的 “全球仓库”,包含几乎所有开源 jar 包,本地和私服没有时,会从这下载

三、工作流程(依赖查找逻辑)

当你在项目里通过 pom.xml 引入一个依赖(比如 Spring ),Maven 会按以下顺序找 jar 包:

  1. 先看本地仓库有没有 → 有就直接用。
  2. 没有的话,看公司有没有远程仓库(私服) → 有就从私服下载到本地。
  3. 还没有,就去中央仓库下载 → 下完存本地,下次直接用。

四、为什么用 Maven?

  • 省心:不用手动管理 jar 包,一行配置自动下载。
  • 规范:统一项目结构、构建流程,团队协作不 “打架”。
  • 高效:一次下载,本地仓库复用,多人开发共享依赖。

简单说,Maven 是 Java 项目的 “管家”,用仓库体系帮你自动管依赖、管构建,让开发更专注写代码~

这张图聚焦 Maven 生命周期,是理解 Maven 构建流程的核心。以下用 “盖房子” 类比,拆解 Maven 核心逻辑:

一、核心概念:Maven 生命周期是 “构建流程的阶段组合”

Maven 把项目构建(从代码到可运行产物)拆成 3 套 “流程模板”(生命周期),每套模板包含多个阶段(Phase),类似 “盖房子分奠基→砌墙→装修” 的流程。

二、3 套生命周期详解(类比 “盖房子流程”)

1. clean 生命周期:“拆房子”(清理旧产物)
  • 作用:删除上一次构建的残留文件(如 target 目录),为新构建 “腾地方”。
  • 阶段
    • pre-clean:准备清理(极少手动用,Maven 自动触发前置逻辑)。
    • clean:执行清理(删除 target 目录)。
    • post-clean:清理后收尾(同理,极少手动用)。

类比:拆房子前先断水断电(pre-clean)→ 拆房子(clean)→ 清理建筑垃圾(post-clean)。

2. default 生命周期:“盖房子核心流程”(编译→测试→打包→部署)
  • 作用:项目构建的核心流程,从源码到可运行产物的完整步骤。
  • 阶段(重点,日常开发常用):
    • compile:编译代码(把 .java 转成 .class)。
    • test:运行单元测试(确保代码逻辑正确)。
    • package:打包(生成 Jar/War 包,类似 “把房子装修好封装”)。
    • install:安装到本地仓库(把 Jar 包存到本地 Maven 仓库,供其他项目引用)。

类比
compile → 打地基、砌墙(把设计图转成实体结构)。
test → 验收(检查墙砌得直不直、水电通不通)。
package → 装修(给房子做最终包装,具备交付条件)。
install → 把房子登记到 “本地房产库”(方便其他项目 / 人引用)。

3. site 生命周期:“做房产证 / 说明书”(生成项目报告)
  • 作用:生成项目文档、报告(如 API 文档、测试覆盖率报告)。
  • 阶段
    • pre-site:准备生成报告(自动触发前置逻辑)。
    • site:生成报告(如 HTML 格式的项目文档)。
    • post-site:报告生成后处理(极少手动用)。

类比:给房子办房产证、拍宣传照(生成文档 / 报告),方便别人了解项目。

三、关键规则:“执行后边阶段,自动触发前边所有阶段”

同一生命周期内,执行某个阶段时,Maven 会自动执行它之前的所有阶段

比如:

  • 执行 mvn package(属于 default 生命周期),Maven 会自动先执行 compile → test → 再执行 package
  • 执行 mvn install,会自动执行 compile → test → package → install

四、总结:Maven 生命周期是 “标准化的构建流程”

Maven 通过 3 套生命周期,把项目构建拆成清晰的阶段,让构建流程标准化、自动化

  • clean 负责 “清理旧产物”,
  • default 负责 “核心构建流程”(从编译到部署),
  • site 负责 “生成项目文档”。

执行命令时,Maven 会自动串联同一生命周期的阶段,让开发者只需关注 “要达到的目标”(如 package 或 install),无需手动执行每个步骤。这就是 Maven 提升效率的核心逻辑~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/909857.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/909857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云中间件:解锁云端应用的强大引擎

走进阿里云中间件 在云计算的宏大版图中,阿里云无疑是一位举足轻重的参与者。而阿里云中间件,作为阿里云服务体系的关键构成部分,在整个云计算架构里扮演着不可或缺的角色,宛如一座桥梁,紧密地连接着底层基础设施与上…

windows下FFmpeg精简

1. 安装MSYS2和必要工具 下载并安装MSYS2打开 MSYS2中的 MinGW 64-bit 终端更新系统包: pacman -Syu # 如果提示关闭终端,关闭后重新打开再次运行: pacman -Su装编译工具链: pacman -S --needed base-devel mingw-w64-x86_64-t…

WPF数据绑定疑惑解答--(关于控件的Itemsource,Collection绑定)

1. ListView绑定的数据类型问题 在 MainWindow 的构造函数中绑定 List11.ItemsSource List<string> rpcListnew List<string>(); public MainWindow() {InitializeComponent();// 确保 List11 的 ItemsSource 已经绑定到 rpcListList11.ItemsSource rpcList; } …

【Centos7安装Cloudera Manager5.12、CDH5.12详细步骤】

安装Cloudera Manager&#xff08;5.12.1&#xff09;一定要细心&#xff0c;每一步走错都可能造成最终安装失败。 安装Cloudera Manager&#xff08;5.12.1&#xff09;一定要硬件资源充足。 本示例参考了众多网上资料&#xff08;放在文末&#xff09;&#xff0c;消耗了1000…

青少年编程与数学 01-011 系统软件简介 25 Web服务器及代理软件

青少年编程与数学 01-011 系统软件简介 25 Web服务器及代理软件 一、Web 服务器软件&#xff08;一&#xff09;定义与功能&#xff08;二&#xff09;历史与主要产品1. Apache HTTP Server2. Nginx3. Microsoft Internet Information Services&#xff08;IIS&#xff09;4. L…

Vue的隐形魔法:虚拟DOM和Diff算法如何让页面飞起来?

大家好&#xff0c;我是江城开朗的豌豆&#xff0c;一名拥有6年以上前端开发经验的工程师。我精通HTML、CSS、JavaScript等基础前端技术&#xff0c;并深入掌握Vue、React、Uniapp、Flutter等主流框架&#xff0c;能够高效解决各类前端开发问题。在我的技术栈中&#xff0c;除了…

SAP_HANA常用sql合集——持续更新中

一、时间格式转换 (1)切换日期格式yyyymmdd的字段数据为yyyy-mm-dd select TO_VARCHAR(TO_DATE(t1.time1, YYYYMMDD), YYYY-MM-DD) AS time1, TO_VARCHAR(TO_DATE(t1.time2, YYYYMMDD), YYYY-MM-DD) AS time2 from table

【AI Study】第四天,Pandas(5)- 数据可视化

文章概要 本文详细介绍 Pandas 的数据可视化功能&#xff0c;包括&#xff1a; 基础绘图高级可视化统计图表实际应用示例 基础绘图 折线图 # 基本折线图 df.plot(x日期, y值) df.plot.line(x日期, y值)# 多列折线图 df.plot(x日期, y[列1, 列2])# 自定义样式 df.plot(x日期…

Linux故障排查

目录 案例1&#xff1a;GRUB引导故障 案例2&#xff1a;文件系统只读故障 案例3&#xff1a;OOM Killer触发 案例4&#xff1a;系统启动卡住&#xff08;initramfs损坏&#xff09; 案例5&#xff1a;磁盘空间耗尽 案例6&#xff1a;SSH登录缓慢 案例7&#xff1a;逻辑卷…

pikachu靶场通关笔记36 越权01之水平越权

目录 一、水平越权 二、账户功能探测 1、登录账号lucy 2、登录账号lili 3、登录账号kobe 三、源码分析 四、渗透实战 1、登录lucy账号 2、越权访问lili账户资料 3、越权访问kobe账户资料 本系列为《pikachu靶场通关笔记》渗透实战&#xff0c;本文通过对越权关卡源码…

javaweb -Ajax

Ajax的定义 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于创建异步 Web 应用的技术&#xff0c;允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分内容。 Ajax的核心特点 异步通信&#xff1a;通过后台与服务器交互&#xff0c;用…

11.OpenCV—联合QT环境配置

1.QT环境变量配置 在Qt中配置OpenCV 3.4.6与Visual Studio 2017的步骤如下&#xff1a; 一、前期准备 安装组件验证 确认已安装Qt的MSVC2017版本&#xff08;如Qt 5.12 MSVC2017 64-bit&#xff09; 检查Visual Studio 2017的MSVC编译器是否正常工作 OpenCV库准备 从官网…

2025虚幻引擎一般用什么模型格式

2025虚幻引擎一般用什么模型格式 前言 积累了一些人物模型发现有的有骨骼&#xff0c;有的没骨骼&#xff0c;有的要转换格式&#xff0c;有的直接可以用&#xff0c;所以了解一下各种模型。 2025虚幻人物模型积累 格式转换真麻烦。 2025.uexp、.uasset文件、.ubulk如何打…

电脑在使用过程中频繁死机怎么办

正兴致勃勃地打游戏&#xff0c;或者赶着完成一份重要的工作文档&#xff0c;电脑突然死机了&#xff0c;鼠标动不了&#xff0c;键盘也没反应&#xff0c;只能干瞪眼干着急。电脑在使用过程中频繁死机&#xff0c;真的太影响心情和效率了。今天咱就来好好聊聊&#xff0c;遇到…

【Java_EE】设计模式

设计模式&#xff1a;解决一些固定场景的固定套路&#xff0c;是一种代码风格的知道指南。设计模式不止23种 1、单例设计模式 单例设计模式&#xff1a;确保一个类只有一个实例&#xff0c;提供全局访问点 单例模式的实现方式&#xff1a; 1&#xff1a;饿汉模式 /*** 饿汉…

Nginx代理缓存静态资源

问题描述 有两台服务器&#xff0c;一台是外网的网关服务器&#xff0c;一台是内网的资源服务器&#xff0c;但是两台服务器距离很远&#xff08;跨省&#xff09;&#xff0c;页面中依赖大量插件资源&#xff0c;加载耗时久&#xff0c;本章重点讲解Nginx代理缓存静态资源。 …

Blender 转换为 STP:软件操作与迪威模型网在线转换全指南

在三维设计与工程制造领域&#xff0c;不同格式的文件承担着各自的使命。Blender 作为一款功能强大且开源的三维建模软件&#xff0c;被众多设计师、艺术家以及学生广泛使用&#xff0c;能够创作出风格多样、细节丰富的三维模型。而 STP 格式作为制造业通用的数据交换标准&…

WebFuture:PDF页面去掉下载按钮

问题描述&#xff1a;客户要求pdf页面不显示下载按钮 解决办法&#xff1a;WF15.2版本开始会在内容管理配置增加“允许下载 PDF“开关&#xff1b;之前的版本需要替换文件来处理 1.备份网站下的base文件夹&#xff0c;路径为/wwwroot/content/_common/base/&#xff0c;然后覆…

【JVM】- 类加载与字节码结构2

编译期处理&#xff08;语法糖&#xff09; java编译器把.java源码编译成.class字节码的过程&#xff0c;自动生成和转换的一些代码。 默认构造器 public class Candy01 { }编译成class后的代码 public class Candy1 {public Candy1(){super();} }自动拆装箱&#xff08;jd…

WSL2 中安装 cuDNN​​ 的完整指南

以下是关于 ​​cuDNN​​ 的详细介绍及在 ​​WSL2 中安装 cuDNN​​ 的完整指南&#xff0c;结合权威资料整理而成&#xff1a; &#x1f4da; ​​一、cuDNN 深度解析​​ ​​1. 定义与作用​​ ​​cuDNN​​&#xff08;CUDA Deep Neural Network Library&#xff09;是…