从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

    • JavaEE 概念

    • Ant

    • Maven

      • 什么是 Maven
      • 安装Maven
      • 第一个 Maven 项目
      • Maven 的组成和配置
        • Maven 目录结构分析
        • 全局配置和用户配置
        • 配置 settings.xml
        • 小结
      • 快速创建 Maven 项目
      • 创建 Web 项目
      • Maven 的生命周期和构建
      • Maven 的依赖管理
      • Maven 的插件管理
      • IDEA 关于 Maven 的设置
      • 使用 Maven 完成 dao 层
      • 使用 Maven 完成 service 层
      • 使用 Maven 完成 web 层
      • Maven 的拆分和聚合
      • Nexus 的搭建
      • Nexus 的使用
      • 安装第三方 jar 包到私服
      • Maven 系列完结
    • 日志

    • Junit

    • JDBC

    • XML 和 JSON

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java
  • JavaEE
  • Maven
2023-05-15
目录

Maven 的组成和配置

# 25.Maven 的组成和配置

本文来讲解一下关于 Maven 的组合和配置,便于后续对 Maven 的讲解和学习。 ‍

# Maven 目录结构分析

我们解压 Maven 后,可以看到文件夹里有这些内容:

apache-maven-3.8.3
├── bin
├── boot
├── conf
├── lib
├── LICENSE
├── NOTICE
├── README.txt
1
2
3
4
5
6
7
8

我们简单来说下各个目录的作用,读者有个印象即可:

  • bin 目录:存放了 Maven 的命令脚本,我们上一小节输入的有关 Maven 的命令,都是在调用这些脚本
  • boot 目录:存放了一些 Maven 本身的引导程序,如类加载器等
  • conf 目录:存放了 Maven 的一些配置文件,如 setting.xml 文件是非常重要的配置文件
  • lib 目录:存放了 Maven 本身运行所需的一些依赖
  • LICENSE:许可证说明文件
  • NOTICE:一些注意事项
  • README.txt:说明文档

# 全局配置和用户配置

目前操作系统都支持多用户,也就是可以创建多个用户,并且让多个用户同时使用。例如我们日常开发的时候,一个 Linux 服务器通常是有多个用户的,Windows 也不例外,只不过大部分 Windows 都是用作个人电脑,比较少涉及到多用户。

因此,大部分软件也考虑到了这样的情况,比如在 Windows 下安装软件的时候,会提示是安装给所有用户,还是仅仅为当前用户安装。

多用户的基本原理,就是根据文件权限来实现的,例如每个用户都有自己的主目录,而安装在全局的软件,可以给所有用户都使用到。

Maven 也有这样的机制,在 Maven 的安装目录下,conf 里的配置就是全局配置。但是在用户目录下,也有一个配置文件,例如我的是在:C:\Users\peterjxl\.m2\settings.xml,这个文件就是用户自己对 Maven 的配置。

这样有几个好处:

  • 每个用户可以有自己不同的配置文件,并且不会相互影响;Maven 会优先使用用户自己的配置文件,然后才是全局的配置文件。换句话说,如果用户的配置文件和全局的配置文件,都做了某个配置,那么会以用户的优先
  • 如果没有这样的机制,一旦某个用户修改了全局的配置文件,那么所有用户都会收到影响。
  • 如果用户没有配置文件,则默认使用全局的配置文件
  • 如果 Maven 有升级,那么各个用户也不会收到影响(如果都使用全局的配置文件,那么升级 Maven 后还要修改对应的 settins.xml)

当然,相信大部分读者都是使用自己的电脑来学习 Maven,直接使用和修改全局配置也是可以的,需读者自行选择。 ‍

# 配置 settings.xml

关于 Maven 的配置,大部分都是修改 Maven 的 conf/settings.xml 文件。 ‍

# 修改仓库地址

我们之前说过,Maven 会将下载的依赖放到本地仓库里,那么是放在哪里呢?

我们可以打开 Maven 的配置文件 apache-maven-3.8.3\conf\settings.xml,第 46 行左右,可以看到这样的注释:

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
1
2
3
4
5
6
7
8
9

localRepository 就是本地仓库的意思,可以看到注释里说默认值是 ${user.home}/.m2/repository,也就是用户目录下的.m2 文件夹里。 ‍ 对于笔者来说,仓库里存放的 jar 包都挺大,为了不占用宝贵的 C 盘空间,我会设置成本地仓库的地址为 D 盘,例如:

  <localRepository>D:\Projects\apache-maven-3.8.3\repository</localRepository>
1

由于我们刚安装完 Maven,本地仓库肯定是空的,那么 Maven 遇到这种情况,就会去中央仓库里寻找依赖,然后下载到本地仓库里。

中央仓库地址:https://repo.maven.apache.org/maven2/

这个中央仓库是配置在哪的呢?在 apache-maven-3.8.3\lib\maven-builder-support-3.8.3.jar 里。我们解压这个 jar 包,一步步找到\org\apache\maven\model\pom-4.0.0.xml 文件,可以看到里面有这样的配置

<repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
1
2
3
4
5
6
7
8
9
10
11

# 配置镜像地址

为了加快下载依赖的速度,我们可以选择从阿里云提供的仓库里下载,因为阿里云在国内,比访问国外的话网速要快不少。

我们打开 settings.xml,找到 mirrors 标签(148 行左右),可以看到如下内容:

<mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
   -->
  </mirrors>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

‍ 注释告诉我们,这里可以配置一个仓库,而不是用默认的仓库。并告诉我们配置的格式如下:

<mirror>
  <id>mirrorId</id>
  <mirrorOf>repositoryId</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://my.repository.com/repo/path</url>
</mirror>
1
2
3
4
5
6

‍ 我们新建一个阿里云的配置:

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>
1
2
3
4
5
6

‍ 后续我们下载依赖的时候,可以看到控制台里显示下载地址变成阿里云的了,速度会快很多,而之前我们都是从中央仓库下载:

该截图是我们演示 第一个 Maven 项目的时候,编译和打包时,从中央仓库用到的一些插件 ‍ 修改之后,都是从阿里云的网站上下载了:

‍

可以配置多个 mirror,但一般只有第一个生效。如果第一个镜像网站宕机了,才会从第二个镜像下载。

# 镜像地址的原理

其实 mirror 配置后,是拦截对远程仓库的请求 , 改变对目标仓库的下载地址。

例如我们刚刚配置的是:<mirrorOf>central</mirrorOf>,这表明如果有对 central 这个中央仓库的请求,就拦截它,改为从阿里云的仓库里下载 jar 包。

除此之外,<mirrorOf> 还支持正则表达式,例如星号 * 表示匹配所有,这样配置的话所有请求都是转到该镜像里。

# 配置某个项目的镜像地址

上述的配置是修改了 Maven 的 settings.xml 文件,该配置文件会对所有项目生效;

Maven 可以针对每个项目配置不同的中央仓库,在项目 pom.xml <repositories> 节点下增加如下配置即可:

<repositories>

    <repository>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>

</repositories>
1
2
3
4
5
6
7
8
9
10
11
12

# 小结

本文我们简单介绍了下 Maven 的组成,并且讲解了如何配置 Maven,在后续的过程中我们有不少地方需要配置 Maven 的。

上次更新: 2025/6/3 09:31:54
第一个 Maven 项目
快速创建 Maven 项目

← 第一个 Maven 项目 快速创建 Maven 项目→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式