Maven

目录

[Maven 的核心概念](#Maven 的核心概念)

[Maven 的作用](#Maven 的作用)

[Maven 仓库类型](#Maven 仓库类型)

[本地仓库(补充)](#本地仓库(补充))

作用

本地仓库路径:

修改本地仓库路径

验证新仓库配置是否生效

常见问题

[从零开始配置 Maven](#从零开始配置 Maven)

[安装 Maven](#安装 Maven)

[配置 Maven 仓库](#配置 Maven 仓库)

[在 IDEA 中应用配置](#在 IDEA 中应用配置)

依赖找不到:

检查依赖冲突


Maven 的核心概念

Maven 的作用

  • 帮助自动下载和管理项目依赖(第三方库,如 Spring、Hibernate 等)。
  • 默认从 Maven 中央仓库(Central Repository) 下载依赖,但国内访问较慢,通常需要配置国内镜像(如阿里云)。

Maven 仓库类型

本地仓库(Local Repository):

  • 默认在 C:\Users\你的用户名\.m2\repository,存储已下载的依赖。

远程仓库(Remote Repository):

  • 中央仓库(Central):Maven 官方仓库,默认使用。
  • 镜像仓库(Mirror):如阿里云仓库,用于加速下载。
  • 私有仓库(如 Nexus、JFrog Artifactory):公司内部使用。
本地仓库(补充)
  1. 当你首次构建项目时,Maven 会从远程仓库(如 Maven Central)下载依赖(JAR 文件等)。

  2. 这些依赖会被缓存到本地仓库(~/.m2/repository)(~:用户主目录)。

  3. 后续构建时,Maven 会优先从本地仓库读取依赖,避免重复下载

作用
  • 离线可用:一旦依赖被下载到本地,即使断网也能构建项目。
  • 加速构建:避免每次构建都从远程下载。
  • 共享依赖:同一台机器上的所有 Maven 项目共享本地仓库。
本地仓库路径:

Linux

/home/username/.m2/repository

(例如:/home/li/.m2/repository)

Windows

C:\Users\username\.m2\repository

(例如:C:\Users\li\.m2\repository)

修改本地仓库路径

可以在 Maven 的配置文件 settings.xml(Maven 安装目录的 conf/settings.xml) 中指定其他路径

复制代码
<settings>
  <localRepository>/path/to/your/custom/repository</localRepository>
</settings>
验证新仓库配置是否生效

运行以下命令,查看 Maven 实际使用的配置(包括解析后的 localRepository 路径):

复制代码
mvn help:effective-settings

如果输出的 <localRepository> 是你自定义的路径,说明配置已生效。

常见问题

IDE 缓存问题

如果你使用 IDE(如 IntelliJ/Eclipse),可能需要:

  • 刷新 Maven 项目(Reimport)。
  • 清理 IDE 缓存(File → Invalidate Caches)。

从零开始配置 Maven

安装 Maven

  1. 下载 Apache Maven(如 apache-maven-3.9.5-bin.zip)。

  2. 解压到任意目录(如 D:\apache-maven-3.9.5)。

  3. 配置环境变量 (确保命令行可用 mvn):

    系统变量新增:

    MAVEN_HOME = maven安装地址
    PATH = %MAVEN_HOME%\bin

  4. 验证安装:

    mvn -v

应输出 Maven 版本信息。

配置 Maven 仓库

找到 Maven 的 settings.xml:

  • 默认路径:apache-maven-3.9.5/conf/settings.xml
  • 用户级路径(推荐,避免影响其他用户,个性化配置):~/.m2/settings.xml(若不存在,可复制 conf/settings.xml 过来修改)。

配置本地仓库路径(可选):

复制代码
<settings>
    <localRepository>仓库地址</localRepository>
</settings>

如果不配置,默认使用 ~/.m2/repository

配置阿里云镜像(加速下载)

复制代码
<mirrors>
    <mirror>
        <id>aliyun</id>
        <name>Aliyun Maven Mirror</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

这样所有对 central(中央仓库)的请求都会走阿里云镜像

在 IDEA 中应用配置

File > Settings > Build, Execution, Deployment > Build Tools > Maven:

  • Maven home path: 选择你的 Maven 安装目录

  • User settings file : 指定你的 settings.xml

  • Local repository : 会自动读取 settings.xml 中的配置。

刷新 Maven 项目

  • 在 IDEA 右侧 Maven 面板 点击 刷新按钮(Reload All Maven Projects)。

测试依赖下载

在 pom.xml 中添加一个依赖(如 Spring Boot)

复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>3.1.0</version>
    </dependency>
</dependencies>

如果配置正确,Maven 会自动从阿里云镜像下载依赖到本地仓库。

依赖找不到:

(1) 阿里云镜像未正确配置

检查 settings.xml 是否真的生效:

  • 确保 mirrorOf 是 central(覆盖默认中央仓库)。
  • 确保 IDEA 使用的是正确的 settings.xml。

(2) 依赖不在阿里云仓库

  • 阿里云镜像默认只代理 Maven Central ,如果依赖在 **其他仓库,**需要额外配置(可以在setting.xml中配置,也可以在项目的pom.xml中配置)

settings.xml

复制代码
<settings>
    <profiles>
        <profile>
            <id>aliyun-repos</id>
            <repositories>
                <repository>
                    <id>aliyun-sdk</id>
                    <url>https://maven.aliyun.com/repository/aliyun-sdk</url>
                </repository>
            </repositories>
            <activation>
                <activeByDefault>true</activeByDefault>  <!-- 默认激活 -->
            </activation>
        </profile>
    </profiles>
</settings>

pom.xml

复制代码
<repositories>
   
    <!-- 阿里云 SDK 专属仓库 -->
    <repository>
        <id>aliyun-sdk</id>
        <url>https://maven.aliyun.com/repository/aliyun-sdk</url>
    </repository>
</repositories>

(3) 依赖版本不存在

如果阿里云仓库没有该版本,尝试直接下载 JAR

从阿里云官方文档或 SDK 发布页面手动下载 JAR,然后安装到本地仓库

检查依赖冲突

运行以下命令,查看依赖树是否有冲突:

复制代码
mvn dependency:tree

如果存在版本冲突,在 pom.xml 中排除冲突的依赖

复制代码
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-ocr</artifactId>
    <version>4.5.0</version>
    <exclusions>
        <exclusion>
            <groupId>冲突的groupId</groupId>
            <artifactId>冲突的artifactId</artifactId>
        </exclusion>
    </exclusions>
</dependency>
相关推荐
程序猿乐锅14 分钟前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
Java后端的Ai之路25 分钟前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
AntsData1 小时前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat1 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
最强小杰1 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
Flynn Liang1 小时前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
灿飞1 小时前
Kotlin与Java虚拟机六:基础与类型系统:一切皆对象,但对象有代价
java·kotlin
计算机毕设定制辅导-无忧学长2 小时前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统
雪芽蓝域zzs2 小时前
第 1 章:IDEA 创建 SpringBoot3.5.16 Maven 项目
java·maven·intellij-idea
golang学习记3 小时前
IDEA 开始换芯,发布全新AI版终端
java·人工智能·intellij-idea