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

Maven 从 0 到 1:安装、配置与依赖管理一站式指南

Maven 从 0 到 1:安装、配置与依赖管理一站式指南

  • Maven 从 0 到 1:安装、配置与依赖管理一站式指南
    • 一、Maven 是什么?
    • 二、核心概念:POM
    • 三、Maven 是如何工作的?—— 仓库机制
    • 四、安装Maven
    • 五、在 IntelliJ IDEA 里配置Maven
    • 六、解析 Maven 坐标
      • 6.1 Maven 坐标的核心组成部分
      • 6.2 一个具体的例子
      • 6.3其他重要概念
      • 6.4总结
    • 七、Maven 依赖配置超简三步走
      • 第 1 步:找到依赖项信息
      • 第 2 步:将依赖项添加到 pom.xml
      • 第 3 步:排除依赖
    • 八、Maven 生命周期核心讲解
      • 1. 三大生命周期 (Lifecycle)
      • 2. 生命周期阶段 (Phase)
      • 3. 在IDEA里面使用Maven命令
      • 4. 在终端里使用Maven命令

Maven 从 0 到 1:安装、配置与依赖管理一站式指南

你是否曾经在开始一个 Java 项目时,面对一堆需要下载的 .jar 包感到头疼?是否因为项目结构混乱,导致团队协作困难?别担心,Maven 就是来解决这些问题的!

这篇文章将用最通俗易懂的方式,带你从零开始认识 Maven。


一、Maven 是什么?

简单来说,Maven 是一个项目管理和构建工具

你可以把它想象成一个非常智能、全能的项目助理。你只需要告诉它你的项目需要什么(比如需要 Spring 框架版本 5.x,需要 JUnit 来测试),它就会自动帮你:

  1. 下载和管理这些依赖的库(.jar 包)。
  2. 编译你的源代码。
  3. 运行测试用例。
  4. 打包你的项目(打成 .jar.war 文件)。
  5. 部署你的项目。

它的核心思想是 “约定优于配置” 。这意味着 Maven 已经为你规定好了一个标准的项目目录结构。只要你按照这个结构来放置文件,Maven 就知道该去哪里找源代码、资源文件等,你就不需要再写一大堆配置去告诉它了。


二、核心概念:POM

Maven 的所有行为都围绕一个核心文件展开:pom.xml

POM 的全称是 Project Object Model(项目对象模型)。它就像是你这个项目的“身份证”和“说明书”,存放在你项目的根目录下。

在这个 pom.xml 文件里,你定义了关于你项目的所有重要信息,Maven 正是通过读取这个文件才知道该如何工作的。

一个最基本的 pom.xml 长这样:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 项目坐标:这三个信息唯一标识了你的项目 --><groupId>com.mycompany</groupId>   <!-- 公司或组织名,倒叙域名 --><artifactId>my-first-app</artifactId> <!-- 项目名 --><version>1.0.0-SNAPSHOT</version>     <!-- 版本号 --><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 依赖列表 --><dependencies><!-- 一个具体的依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope> <!-- 作用域:只在测试时使用 --></dependency></dependencies>
</project>

什么是“坐标”?

  • groupId, artifactId, version 这三个属性组成了 Maven 世界的“坐标”,通过这个坐标,Maven 可以唯一地定位到任何一个第三方库。这也是它能够自动下载依赖的秘诀。

三、Maven 是如何工作的?—— 仓库机制

Maven 通过仓库来统一管理所有依赖。

  1. 本地仓库:在你个人电脑上的一个文件夹。Maven 会先把所有下载好的 jar 包放在这里。默认路径是 ~/.m2/repository
  2. 中央仓库:由 Maven 社区维护的全球唯一仓库。当你声明了一个依赖后,Maven 会首先在本地仓库查找,如果找不到,就会自动去中央仓库下载到你本地。
  3. 私服:一些大公司会在内部搭建的私有仓库服务器,作为中央仓库的镜像,目的是节省带宽和加速构建。

这个过程完全是自动的,你只需要在 pom.xml 中声明 “我需要什么”,而不需要手动搜索、下载、添加。这极大地解决了依赖管理带来的混乱。

在这里插入图片描述


四、安装Maven

Maven官网下载地址:https://maven.apache.org/download.cgi

在这里插入图片描述

下载好了之后将压缩包解压在没有中文路径的地方。

  1. 配置一个本地仓库(新建一个名为mvn_repo的文件夹)
    我此处的路径为:D:\apache-maven-3.9.11\mvn_repo
  2. 修改配置文件,用记事本打开"D:\apache-maven-3.9.11\conf\settings.xml"
    在这里插入图片描述
    添加这串代码
  <localRepository>D:\apache-maven-3.9.11\mvn_repo</localRepository>
  1. 将镜像替换为阿里云镜像
    <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>

在这里插入图片描述

  1. 在系统变量里面添加%MAVEN_HOME%目录选择D:\apache-maven-3.9.11
  2. 在path里面新建一个%MAVEN_HOME%\bin
  3. 在cmd里面输入mvn -v在这里插入图片描述
    若出现这个则说明安装完成

五、在 IntelliJ IDEA 里配置Maven

首先打开 IntelliJ IDEA 的设置(记得先关闭当前项目,在全局设置里面调,不然调的是项目的设置

  1. 构建、执行、部署里找到构建工具——>Maven
    更改主路径和用户设置文件
    在这里插入图片描述

  2. 在 Maven的下面的【运行程序】里面添加当前你的JRE版本
    在这里插入图片描述

  3. 检查Java编译器,项目字节码版本应该与语言级别相同
    在这里插入图片描述

  4. 创建一个新项目,在项目结构里面检查一下
    在这里插入图片描述
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/32a438758903401ca53b7b5fc2fc40b7.png

  5. 运行成功就说明配置好了在这里插入图片描述


六、解析 Maven 坐标

Maven 坐标是 Maven 的核心概念,它就像是一个物件的唯一身份证,通过一组标识来精确定位和管理项目所依赖的任何一个构件(Jar 包、War 包等)。

6.1 Maven 坐标的核心组成部分

一个完整的 Maven 坐标主要由以下 5 个基本元素组成,其中前三个是必选的,后两个是可选的。

元素说明是否必须举例
groupId组织/公司标识。通常使用反向域名规则,如公司域名倒序。它定义了项目所属的组织或集团,下辖多个 artifactId必须org.springframework.boot, com.google.guava
artifactId项目/模块标识。代表该组织下的一个具体项目或模块。生成的构件的名称会基于这个 artifactId必须spring-boot-starter-web, guava
version版本号。指定项目的当前版本。必须2.7.3, 31.1-jre
packaging打包方式。指定项目构建后生成的构件类型。如果未指定,默认为 jar可选jar, war, pom, maven-plugin, ear
classifier分类器。用于区分从相同 POM 但内容不同的构件。例如,javadocsources 构件。可选sources(源码包), javadoc(文档包), jdk8(针对JDK 8的版本)

6.2 一个具体的例子

我们来看一个非常常见的 Maven 依赖声明,它来自 pom.xml 文件中<dependencies> 部分:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.3</version></dependency>

解析这个坐标:

  1. groupId: org.springframework.boot

    • 这告诉我们,这个依赖是由 Spring Boot 这个组织(项目)维护的。所有 Spring Boot 官方提供的构件都以这个开头。
  2. artifactId: spring-boot-starter-web

    • 这是 Spring Boot 组织下的一个具体模块,名为 spring-boot-starter-web。从名字就能看出,它是用于支持 Web 应用开发的起步依赖。
  3. version: 2.7.3

    • 这个 Web 起步依赖的具体版本是 2.7.3。Maven 会根据这个版本号去仓库里寻找对应的 jar 文件。
  4. packaging: jar (默认值,未显式写出)

    • 这个依赖最终被打包成一个 Jar 文件,例如 spring-boot-starter-web-2.7.3.jar

最终,Maven 会根据这个坐标,在本地仓库或远程中央仓库中寻找名为:
org/springframework/boot/spring-boot-starter-web/2.7.3/spring-boot-starter-web-2.7.3.jar
的文件。


6.3其他重要概念

  • 坐标的唯一性groupId + artifactId + version + packaging + classifier 这五个元素组合起来,构成了一个全球唯一的标识。世界上不会有两个构件拥有完全相同的这组坐标。

  • SNAPSHOT 版本:版本号中如果带有 -SNAPSHOT(例如 1.0.0-SNAPSHOT),表示这是一个快照版本,通常处于开发阶段。Maven 会优先去远程仓库检查是否有更新的快照版本,这对于团队协作开发非常有用。

  • 版本范围:你可以指定一个版本范围而不是固定版本(如 [1.2.0,)),但不推荐使用,因为它会导致构建的不确定性。

  • <scope>:虽然不属于坐标本身,但常与坐标一同使用。它定义了依赖的作用范围(如 compile, test, provided, runtime),决定了依赖在项目生命周期哪个阶段可用。

6.4总结

Maven 坐标是一个简单而强大的寻址系统。理解它的每个部分意味着:

  • 当你需要添加一个依赖时,你知道如何去网上(如 Maven Central Repository)查找正确的 groupId, artifactIdversion
  • 当你看到一段依赖配置时,你能立刻明白它引用的是哪个组织的哪个项目的哪个版本。
  • 当出现依赖冲突时,你能根据坐标信息快速定位问题来源。

七、Maven 依赖配置超简三步走

第 1 步:找到依赖项信息

当你想要在项目中使用某个第三方库时,你需要知道它的 ​​坐标(Coordinates)​​,即三个信息:

  1. groupId​​: 通常代表组织或项目组。

  2. ​​artifactId​​: 代表项目中的具体库名。

  3. ​​version​​: 库的版本号。

​​如何找到这些信息?​​

最直接的方法是去 Maven 中央仓库https://mvnrepository.com/搜索。

  1. 打开网站,在搜索框输入你想要的库名,例如 Spring Context。

  2. 选择一个稳定且常用的版本(版本号后面有 Usage柱状图的那个),点击进去。
    在这里插入图片描述3. 页面中会直接给出它的 Maven 配置代码,复制即可。
    在这里插入图片描述

第 2 步:将依赖项添加到 pom.xml

在你的 Maven 项目根目录下,有一个最重要的文件叫 pom.xml。打开它,找到 <dependencies>标签。​​所有的依赖项都要放在这个标签里面​​。如果还没有这个标签,就在 <project>标签内,自己创建它。把你从中央仓库复制的代码,粘贴到 <dependencies>内部。

​​示例:​​
假设我们找到了 Jackson Databind版本 2.15.2,那么你的 pom.xml看起来应该是这样的:

在这里插入图片描述

点击刷新,看到maven这栏依赖项里面有就说明配置好了
在这里插入图片描述

第 3 步:排除依赖

如果需要某个依赖,但想​​排除它带来的特定子依赖​​,使用 <exclusions>标签:

    <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.2.7</version><exclusions><!-- 排除不需要的子依赖 --><exclusion><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId></exclusion></exclusions></dependency></dependencies>

再次刷新过后可以发现依赖项已经被删除了在这里插入图片描述


八、Maven 生命周期核心讲解

Maven 的生命周期被设计得非常完善和有序,它包含了项目构建的所有环节。其核心思想是:生命周期由多个阶段(Phase)组成,每个阶段负责一个特定的任务,并且这些阶段是按顺序执行的。

1. 三大生命周期 (Lifecycle)

Maven 拥有三套相互独立的生命周期:

  • clean:清理生命周期,负责清除上次构建生成的文件(比如删除 target 目录)。
  • default (或 build):构建生命周期,这是最核心的部分,负责编译、测试、打包、部署等整个构建过程。
  • site:站点生命周期,负责生成项目报告、站点文档等。

2. 生命周期阶段 (Phase)

每个生命周期都由一系列按顺序排列的阶段构成。执行某个阶段,会自动执行它之前的所有阶段。

以最重要的 default(构建)生命周期为例,其关键阶段包括(按顺序):

  1. validate:验证项目是否正确且所有必要信息可用。
  2. compile:编译项目的源代码。
  3. test:使用单元测试框架(如 JUnit)运行测试。此阶段不会要求打包或部署代码。
  4. package:将编译后的代码打包成可分发格式,如 JAR、WAR 包。
  5. verify:对集成测试结果进行检查,以确保满足质量要求。
  6. install:将打包好的软件包安装到本地仓库,以便其他本地项目依赖使用。
  7. deploy:在构建环境中完成,将最终的软件包复制到远程仓库,以便其他开发者和项目共享。

3. 在IDEA里面使用Maven命令

以下面的pom.xml为例

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>Maven2</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.2.7</version><exclusions><!-- 排除不需要的子依赖 --><exclusion><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId></exclusion></exclusions></dependency></dependencies>
</project>

在IDEA右侧的Lifestyle里面双击即可执行
在这里插入图片描述
以下是执行完package之后的场景,会在target里面生成一个jar包

在这里插入图片描述
运行完install之后可以在我们本地仓库里面找到安装好的jar包

此时我的 路径为D:\apache-maven-3.9.11\mvn_repo\org\example\Maven2\1.0-SNAPSHOT

<groupId>org.example</groupId>这行代码里面的org.example就是我们在本地仓库里面需要找的路径

在这里插入图片描述

4. 在终端里使用Maven命令

项目编译与打包

命令说明
mvn compile编译源代码,生成 .class 文件到 target/classes 目录
mvn test运行测试用例(会先自动执行 compile
mvn package打包项目(会先执行 test),生成 JAR/WAR 包到 target/ 目录
mvn install安装到本地仓库(会先执行 package),以便其他本地项目引用
mvn clean清理项目,删除 target 目录
mvn clean install最常用组合:先清理再安装,确保是全新构建

跳过测试相关

命令说明
mvn install -DskipTests跳过测试,但会编译测试代码
mvn install -Dmaven.test.skip=true完全跳过测试,不编译也不执行测试

依赖管理

命令说明
mvn dependency:tree显示依赖树,查看所有传递性依赖,排查 Jar 包冲突神器
mvn dependency:resolve解析依赖,下载所有依赖包
mvn dependency:purge-local-repository清理本地仓库中当前项目的依赖缓存(慎用)

其他实用命令

命令说明
mvn help:effective-pom查看有效 POM,显示所有默认配置与自定义配置合并后的最终结果
mvn --versionmvn -v查看 Maven 版本信息
mvn <phase> -h--help获取帮助,例如 mvn install -h
http://www.dtcms.com/a/357449.html

相关文章:

  • Ubuntu下的压缩及解压缩
  • 基于SpringBoot的高校科研项目管理系统【2026最新】
  • 《生成式AI消费级应用Top 100——第五版》| a16z
  • Redis-分布式缓存
  • LBM——大型行为模型助力波士顿人形Atlas完成多任务灵巧操作:CLIP编码图像与语义,之后DiT去噪扩散生成动作
  • 中级统计师-统计实务-第二章 统计调查设计
  • 鸿蒙FA/PA架构:打破设备孤岛的技术密钥
  • PHP的md5()函数分析
  • Java 8核心特性详解:从Lambda到Stream的革命性升级
  • B树的概述以及插入逻辑
  • 淘宝四个月造了一个超越美团的“美团”
  • LeetCode - 283. 移动零
  • 应用转生APP:无需Root权限的应用双开和Xposed模块加载工具
  • 使用ansible临时命令完成以下操作
  • 如何去除edge浏览器的灰色边框
  • 临床研究三千问——如何将临床问题转换成科学问题(7)
  • Python字符串转日期完全指南:从基础到企业级应用实践
  • 如何避免分库分表后的“数据热点”与“扩容噩梦”?
  • 【MySQL】练习12-2:配置复制
  • 金属结构疲劳寿命预测与健康监测技术—— 融合能量法、红外热像技术与深度学习的前沿实践
  • ros2--service/服务--接口
  • zyplayer-doc 开源知识库:部署与使用指南
  • 网络编程 反射【详解】 | Java 学习日志 | 第 15 天
  • 瞬态数据表定义Fluent变量
  • [打包压缩] gzip压缩和解压缩介绍
  • 无人机固件升级与技术要点解析
  • 2025 年 8 月《DeepSeek-V3.1 SQL 能力评测报告》发布
  • 表复制某些字段的操作sql
  • 深入探讨可视化技术如何实现安全监测
  • 13 SQL进阶-InnoDB引擎(8.23)