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>
相关推荐
DKPT15 分钟前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟2 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
DuelCode3 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
幽络源小助理3 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码3 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot
YuTaoShao4 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
Dcs4 小时前
超强推理不止“大”——手把手教你部署 Mistral Small 3.2 24B 大模型
java
东阳马生架构4 小时前
订单初版—1.分布式订单系统的简要设计文档
java
Code blocks5 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins