沉梦手记 沉梦手记
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 音视频处理
  • Linux 与容器化运维
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 音视频处理
  • Linux 与容器化运维
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

    • idea相关

    • 玩转Git

    • Maven相关

      • Maven简介
        • 传统项目管理面临的痛点
        • Maven 是什么?
        • Maven 的作用
        • 下载与安装
          • 环境变量配置
        • Maven 目录结构
          • bin 目录
          • boot 目录
          • conf 目录
          • settings.xml 常见配置项
        • Maven 基础概念
          • 仓库
          • 仓库分类
          • 私服的作用
          • 坐标
          • 什么是坐标?
          • Maven 坐标的组成
          • Maven 坐标的作用
      • Maven常用命令
      • Maven依赖管理
      • Maven生命周期与插件
      • Maven项目管理工具
      • Maven配置文件详解
    • 前端工具

    • 测试工具

    • AI工具

  • 工具库篇

  • 开发技巧篇

  • 工具类系列

  • 随笔

  • 开发日常
  • 开发工具篇
  • Maven相关
沉梦听雨
2024-09-07
目录

Maven简介

# Maven 简介

# 传统项目管理面临的痛点

在没有 Maven 之前,Java 项目管理存在以下问题:

  • jar 包管理混乱:手动下载和管理 jar 包,容易出现版本不统一、版本冲突等问题。
  • 工程升级维护繁琐:依赖变更需要手动增删 jar 包,操作繁琐且容易出错。
  • 项目结构不统一:不同开发者、不同 IDE 创建的项目结构各不相同,协作困难。

# Maven 是什么?

Maven 本质是一个项目管理工具,它将项目开发和管理过程抽象成一个对象模型(POM)。

POM(Project Object Model):项目对象模型,即 pom.xml 文件,是 Maven 项目的核心配置文件。

# Maven 的作用

  1. 项目构建:提供标准的、跨平台的自动化项目构建方式。
  2. 依赖管理:方便快捷地管理项目所需的资源(jar 包),自动处理版本冲突问题。
  3. 统一开发结构:提供标准的、统一的项目结构,降低团队协作成本。

# 下载与安装

  • 官网:https://maven.apache.org/ (opens new window)
  • 下载地址:https://maven.apache.org/download.cgi (opens new window)

# 环境变量配置

Maven 依赖 Java 环境,因此需要配置以下环境变量:

环境变量 说明
JAVA_HOME 指定 JDK 的安装路径,Maven 运行依赖 JDK
MAVEN_HOME 指定 Maven 的安装路径
PATH 将 %MAVEN_HOME%\bin 添加到 PATH 中

配置完成后,在命令行执行 mvn -v,若正确显示 Maven 版本信息,则说明安装配置成功。

# Maven 目录结构

解压 Maven 安装包后,目录结构如下:

# bin 目录

Maven 的脚本目录,包含所有可执行命令,如 mvn、mvnDebug 等。

# boot 目录

Maven 的启动类加载器目录,包含 plexus-classworlds 类加载器框架。

# conf 目录

Maven 的配置文件目录,其中最重要的配置文件是 settings.xml。

# settings.xml 常见配置项

  1. localRepository:指定本地仓库的路径。本地仓库是 Maven 用来存储项目依赖的地方。默认情况下,本地仓库位于用户主目录下的 .m2 文件夹中。

  2. mirrors:用于配置镜像仓库。镜像仓库用于替代中央仓库下载依赖,可以配置多个镜像,每个镜像包含 id、url 和 mirrorOf 等属性。

  3. proxies:用于配置代理服务器。如果需要通过代理服务器访问外部资源,可以在此配置代理的主机名、端口号、用户名和密码等信息。

  4. servers:用于配置服务器认证信息。如果需要访问需要身份验证的远程仓库或发布构件到远程仓库,可以在此配置服务器的 id、用户名和密码等。

  5. profiles:用于配置环境配置文件。可以根据不同的环境或需求,定义不同的 profile,并配置激活条件(如操作系统、JDK 版本等)。

  6. pluginGroups:用于配置插件组。插件组是一组相关的插件,配置后可以在命令行中直接使用插件的前缀,而无需指定完整的插件坐标。

更详细的 settings.xml 配置说明,请参考 Maven 配置文件详解。

# Maven 基础概念

# 仓库

仓库用于存储 Maven 资源,包含各种 jar 包和插件。

# 仓库分类

仓库类型 说明
本地仓库 自己电脑上存储资源的仓库,从远程仓库获取资源并缓存到本地
远程仓库 非本机电脑上的仓库,为本地仓库提供资源
中央仓库 Maven 团队维护的公共仓库,存储了大量开源资源
私服仓库 部门/公司范围内共享的仓库,通常从中央仓库获取并缓存资源

资源获取顺序:本地仓库 → 私服仓库 → 中央仓库

# 私服的作用

  • 保存具有版权的资源:包含购买或自主研发的 jar 包,中央仓库中的资源都是开源的,不能存储具有版权的资源。
  • 范围内共享资源:仅对内部开发团队共享,不对外公开。
  • 加速依赖下载:私服缓存了中央仓库的资源,内部团队从私服下载速度更快。

# 坐标

# 什么是坐标?

Maven 中的坐标用于唯一标识仓库中的资源位置,类似于地理坐标系中的经纬度。

# Maven 坐标的组成

属性 说明 示例
groupId 组织 ID,定义当前项目隶属的组织(通常域名反写) com.example
artifactId 项目 ID,定义当前项目的名称(通常是模块名称) my-project
version 版本号,定义当前项目的版本 1.0.0
packaging 打包方式,默认为 jar jar / war / pom

# Maven 坐标的作用

通过唯一标识定位资源位置,使资源的识别与下载工作可以自动化完成,无需人工干预。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.29</version>
    <packaging>jar</packaging>
</dependency>
1
2
3
4
5
6
上次更新: 2026/7/24 16:59:26
常见问题
Maven常用命令

← 常见问题 Maven常用命令→

Theme by Vdoing | Copyright © 2023-2026 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式