news 2026/8/14 23:35:19

Maven入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maven入门

一、什么是Maven

Maven是Apache旗下开源的Java项目管理和构建工具,基于POM(Project Object Model,项目对象模型),通过pom.xml配置文件管理项目,解决传统Java开发jar包繁琐导入、项目构建流程混乱的痛点。

Maven三大核心作用

  1. 依赖管理:只需要写坐标,自动下载、管理项目需要的jar包,不用手动复制jar包。
  2. 标准项目构建流程:跨平台(Windows/Linux/MacOS)自动完成compile编译 → test测试 → package打包 → deploy发布整套流程。
  3. 统一项目目录结构:所有Maven项目遵循同一套目录规范,不同开发人员、不同操作系统项目结构完全一致。

二、Maven仓库

1.仓库作用

Maven仓库用来存储和管理所有的jar包、插件。

2.仓库分类&查找jar包顺序

  1. 本地仓库:本机电脑上的文件夹,优先找这里,如果已经有需要的jar包,直接使用。
  2. 远程仓库(私服):公司内部搭建的仓库,如果本地没有,去私服找。
  3. 中央仓库:Maven官方的公共仓库,网络下载jar包的最终来源。

查找顺序:本地仓库 → 远程私服 → 中央仓库。本地没有就去下,下载完成后会保存到本地仓库,下次直接读取本地。


三、Maven坐标(核心)

坐标是jar包资源的唯一身份证,通过坐标可以准确定位到某一个jar包,写在pom.xml中。

坐标三要素

标签含义示例
groupId组织ID,一般域名反写com.itheima
artifactId项目/模块名称maven‑project01
version版本号1.0‑SNAPSHOT

版本说明:

  • SNAPSHOT:快照版本,开发中版本,不稳定。
  • RELEASE:正式发行版本,稳定可用。

示例1:定义当前Maven项目本身

<!-- 当前项目的坐标 --><groupId>com.itheima</groupId><artifactId>maven‑project01</artifactId><version>1.0‑SNAPSHOT</version>

示例2:引入第三方依赖(hutool工具包)

<!-- 引入hutool工具类jar包 --><dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool‑all</artifactId><version>5.8.27</version></dependency></dependencies>

把这段粘贴到pom.xml,Maven会自动去仓库下载hutool的jar包,项目直接使用,不用手动拷贝jar。


四、依赖排除(exclusions)

场景:A依赖B,B又依赖C,有时候C会产生版本冲突,我们需要排除掉传递过来的C依赖

语法:<exclusions>标签写在<dependency>内部,排除的时候不需要写version,只需要groupId、artifactId。

完整示例:引入spring‑context,排除它传递依赖的micrometer‑observation

<dependency><groupId>org.springframeworkframework</groupId><artifactId>spring‑context</artifactId><version>6.1.4</version><!-- 排除传递依赖 --><exclusions><exclusion><groupId>io.micrometer</groupId><artifactId>micrometer‑observation</artifactId></exclusion></exclusions></dependency>

五、IDEA中Maven环境配置&导入Maven项目

1.全局Maven环境配置

File → Settings → Build,Execution,Deployment → Build Tools → Maven

  1. 设置Maven安装根目录
  2. 设置settings.xml配置文件路径(配置阿里云镜像、本地仓库路径)
  3. Runner配置JDK版本
  4. Java Compiler设置项目字节码版本,和JDK版本保持一致。

2.两种导入Maven项目的方式

方式一:Project Structure导入

File → Project Structure → Modules → Import Module → 选中项目的pom.xml文件

方式二:Maven面板导入(最常用)

打开右侧Maven面板,点击+号(Add Maven Projects),选中项目的pom.xml,完成导入。

注意:导入完成后,点击刷新按钮,让Maven重新加载pom.xml,下载依赖jar包。


六、Maven 生命周期

Maven的生命周期是对项目构建流程的一套抽象规范,一共三套互相独立的生命周期

  1. clean:执行清理,删除构建产生的target目录产物
  2. default:核心生命周期,编译、测试、打包、安装、部署都在这里
  3. site:生成项目文档、站点报告

💡重要规则:同一套生命周期内,执行后面阶段,会自动执行前面所有阶段

default生命周期常用阶段:

阶段功能说明
clean清理,删除target目录
compile编译业务源代码
test执行单元测试
package项目打包(jar/war)
install将构建产物安装到本机Maven本地仓库
deploy将产物发布到远程私服仓库

七、软件测试基础概念

7.1 测试四大阶段

  1. 单元测试:测试最小代码单元(Java方法),开发人员编写
  2. 集成测试:测试各个模块之间交互调用
  3. 系统测试:对完整软件整体功能测试,测试人员执行
  4. 验收测试:面向客户业务需求,确认产品是否满足业务

7.2 三种测试分类

  • 白盒测试:知晓代码内部逻辑,针对代码逻辑进行校验
  • 黑盒测试:不关心内部实现,只校验输入输出功能
  • 灰盒测试:结合白盒与黑盒,兼顾代码结构和外部功能

八、JUnit5单元测试

8.1 什么是单元测试

单元测试:针对Java中的方法,编写专门测试代码,验证方法逻辑输出是否符合预期。

❌ 使用main方法测试的弊端

  1. 业务代码和测试代码混杂在一起,不易维护
  2. 某一处代码异常,后续代码直接停止执行
  3. 无法自动化执行,没有可视化测试报告

✅ JUnit5优势

  1. 测试代码存放于src/test/java,和业务代码src/main/java物理隔离
  2. 单个测试方法失败,不会影响其他测试方法运行
  3. 自动执行,红绿标识测试结果,自动生成测试报告

8.2 JUnit5 使用步骤

  1. 在pom.xml引入junit-jupiter依赖,一般设置scope为test
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.3</version><scope>test</scope></dependency>
  1. src/test/java下编写测试类,类命名规范:XXXTest
  2. 测试方法添加@Test注解;测试方法要求 public void,无入参
  3. 运行测试,绿色代表测试通过,红色代表测试失败

8.3 Assertions 断言

断言用来校验实际运行结果和预期结果是否一致,不匹配直接抛出测试失败。

断言API作用
assertEquals(预期值,实际值,“提示信息”)判断两个值相等
assertNotEquals判断两个值不相等
assertNull对象必须等于null
assertNotNull对象不能为null
assertTrue条件结果必须为true
assertFalse条件结果必须为false
assertThrows断言代码抛出指定异常

8.4 JUnit5常用注解

注解功能说明
@Test标记普通测试方法
@ParameterizedTest参数化测试,替代@Test
@ValueSource为参数化测试提供测试数据源
@DisplayName("自定义名称")修改测试在控制台展示的名字
@BeforeEach每一个测试方法执行前执行一次
@AfterEach每一个测试方法执行结束后执行一次
@BeforeAll所有测试运行前执行仅一次,方法必须static
@AfterAll所有测试运行结束后执行仅一次,方法必须static

💡记忆小技巧:Each 对应每一个测试方法;All 代表全部测试整体,All修饰的方法必须静态。


九、Maven依赖范围 scope

通过<scope>标签设置jar包生效范围,控制依赖在三处环境是否生效:

  1. main业务代码
  2. test测试代码
  3. package打包运行
scope取值main主程序test测试打包运行使用示例
compile(默认)log4j
testJUnit单元测试包
providedservlet-api
runtimejdbc驱动包
  • test:仅测试目录下可以使用,打包不会把该jar打进项目,JUnit就使用该范围。

示例代码:

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.3</version><scope>test</scope></dependency>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 23:33:51

2026生成式引擎优化平台品牌代运营哪家口碑好?严选评析分享

摘要&#xff1a;2026年生成式引擎优化&#xff08;GEO&#xff09;行业逐步走向规范化、精细化发展阶段&#xff0c;AI大模型采信规则持续收紧&#xff0c;企业品牌AI全域可见度、信息真实性、长效资产沉淀成为数字营销核心诉求。当前市场GEO代运营服务商数量繁多&#xff0c;…

作者头像 李华
网站建设 2026/8/14 23:27:51

毕业生私藏✨靠这一个软件搞定整篇毕业论文|全程省心不踩雷

真心建议所有写毕业论文的同学&#xff0c;别再到处找零碎工具、乱搜模板了&#xff01; 写论文最累的从来不是写作本身&#xff0c;是开题没思路、综述不会写、英文摘要翻车、格式一直错、改完重复率AI痕迹又超标的连环内耗&#x1f62d; 我整个毕业论文全程自用okbiye&…

作者头像 李华
网站建设 2026/8/14 23:21:57

收藏!小白程序员必看:轻松入门大模型驾驭工程(附实例解析)

本文深入浅出地介绍了大模型在行动与反馈闭环中的应用&#xff0c;以及为何多数应用停留在简单动作上。文章提出了“harness engineering”&#xff08;驾驭工程&#xff09;这一概念&#xff0c;详细解析了编码 agent 的三张核心图&#xff1a;架构、时序、控制逻辑&#xff0…

作者头像 李华
网站建设 2026/8/14 23:21:13

Word页眉页脚批量修改全攻略:从模板应用到VBA自动化实战

1. 项目概述&#xff1a;为什么“统一批量修改”是Word文档处理的刚需如果你处理过十份以上的Word文档&#xff0c;尤其是那些来自不同部门、不同人员或者历经多次修订的文档&#xff0c;你一定会对页眉页脚这个“小东西”又爱又恨。爱的是它能提供统一的文档标识、页码导航&am…

作者头像 李华
网站建设 2026/8/14 23:20:10

你感觉被掏空?别躺着。骑上车,让精力自己流回来。

你感觉被掏空&#xff1f;别躺着。骑上车&#xff0c;让精力自己流回来。很多人以为&#xff0c;累就要躺着。就要歇着。最好什么都不干。他们把精力当成手机电量&#xff0c;觉得省着用就能撑久点。用完就得插上电源慢慢充。这是错的。精力不是电。精力是河。你感觉被掏空&…

作者头像 李华