JavaWeb从入门到进阶(Maven依赖管理)

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。

配置:
1.在pom.xml中编写<dependencies>标签
2.在<dependencies>标签中使用<dependency>引l入坐标
3.定义坐标的groupld,artifactld,version
4.点击刷新按钮,引入最新加入的坐标

引入 Maven 依赖的主要目的

1. 依赖管理

  • 自动下载:自动从 Maven 中央仓库(或其他配置的仓库)下载项目所需的第三方库

  • 版本控制:精确控制每个依赖的版本,避免版本冲突

  • 传递性依赖:自动处理依赖的依赖(如 A 依赖 B,B 依赖 C,Maven 会自动下载 C)

2. 项目构建标准化

  • 统一构建流程cleancompiletestpackageinstalldeploy

  • 跨平台一致性:无论在哪个开发环境中,构建结果都是一致的

3. 项目结构标准化

4. 生命周期管理

Maven 定义了完整的构建生命周期:

  • 清理生命周期mvn clean

  • 默认生命周期:编译、测试、打包、安装等

  • 站点生命周期:生成项目文档和报告

依赖配置

在pom.xml中手动配置 第一次配置时可能不会提示,这时,我们可以打开maven依赖仓库Maven Repository: Search/Browse/Explore,手动的复制粘贴到pom.xml文件中,不要忘记刷新即可。

依赖传递

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。

依赖范围

依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope>...</scope>设置其作用范围。作用范围:

主程序范围有效。(main文件夹范围内)

测试程序范围有效。(test文件夹范围内)

是否参与打包运行。(package指令范围内)

生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。

Maven中有3套相互独立的生命周期:

clean:清理工作。

default:核心工作,如:编译、测试、打包、安装、部署等。

site:生成报告、发布站点等。

我们主要关注以下的五个生命阶段

++clean:移除上一次构建生成的文件
compile:编译项目源代码
test:使用合适的单元测试框架运行测试(junit)++

++package:将编译后的文件打包,如:jar、war等
instal:安装项目到本地仓库++

注意:在**++同一套生命周期++**中,运行后面的阶段,前面的阶段也会运行

执行指定生命周期的两种方式:

在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。

在命令行中,通过命令执行。

单元测试 是对软件中的最小可测试单元进行检查和验证的测试方法。

  1. 质量保证 - 提前发现 bug

  2. 安全网 - 重构时不破坏原有功能

  3. 活文档 - 展示代码如何使用

  4. 设计验证 - 促进写出可测试的好代码

简单记:单元测试就是给每个"零件"(方法)做的"出厂检验",确保每个零件都合格,整个"机器"(系统)才能稳定运行。

单元测试的依赖 指的是:为了编写和运行单元测试代码而需要引入的第三方库或框架。这些依赖只在测试阶段使用,不会打包到最终的生产代码中。

作用:

  • 提供测试框架(JUnit/TestNG)

  • 提供 Mock 能力(Mockito)

  • 提供测试数据(H2 内存数据库)

  • 提供更丰富的断言(AssertJ)

这样分离的好处:生产环境更干净、部署包更小、依赖更清晰

详解pom.xml文件

pom.xml 就像是项目的"说明书":

  • 📦 依赖清单:项目需要哪些"零件"(jar 包)

  • 🔧 工具配置:用什么"工具"(插件)来构建

  • 📁 目录结构:文件都放在哪里

  • ⚙️ 构建规则:如何编译、测试、打包

相关推荐
ValhallaCoder3 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥4 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
猫头虎4 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
忆~遂愿4 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘4 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
八零后琐话4 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python
Fcy6485 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满5 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器