Maven本地仓库默认路径为Linux/macOS的~/.m2/repository或Windows的C:\Users{用户名}.m2\repository,可通过修改~/.m2/settings.xml中的标签自定义路径,注意使用绝对路径且需手动迁移旧数据。
Java 项目中 Maven 的本地仓库默认是 ~/.m2/repository(Linux/macOS)或 C:\Users\{用户名}\.m2\repository(Windows)。这个位置由 Maven 自动创建,所有下载的依赖(.jar、.pom)都缓存在这里。
想改路径?直接修改 ~/.m2/settings.xml(若不存在可复制 $M2_HOME/conf/settings.xml 创建),在 标签下加:
/path/to/your/local/repo
注意:settings.xml 文件必须是 UTF-8 编码;路径不要以 ~ 或环境变量开头(如 $HOME),Maven 不解析这些;改完后旧仓库不会自动迁移,需手动复制或等下次构建时重下。
Maven 默认只连中央仓库(https://repo.maven.apache.org/maven2/),但国内直连慢且不稳定。通常做法是配置镜像()或显式声明仓库()。
常用配置方式:
settings.xml 的 下加aliyunmaven * Aliyun Maven https://maven.aliyun.com/repository/public
表示拦截所有仓库请求;若只想镜像中央仓,写 central;若同时用 Nexus *,别设为 *,否则*请求也被转发走。
pom.xml 的 中声明nexus-snapshots https://nexus.example.com/repository/maven-snapshots/ false true
注意: 必须和 settings.xml 中 的 一致(用于认证); 控制是否允许拉取对应类型构件;Nexus 地址末尾斜杠不能少,否则部分版本会 404。
settings.xml 里配了镜像,但 pom.xml 还是连了中央仓常见现象:明明 settings.xml 配了阿里云镜像,执行 mvn clean compile 却仍看到日志里出现 Downloading from central: —— 这不是失败,而是 Maven 的日志误导。
真实原因有三个:
central 是仓库逻辑 ID,不是实际 URL;只要镜像 匹配成功,请求就发到了镜像地址,只是日志没更新显示名pom.xml 显式声明了 且 为 central,会绕过镜像(镜像只作用于未显式声明的仓库)maven-compiler-plugin)从插件仓库下载,而插件仓库默认是 pluginRepositories,需单独配镜像或声明验证是否真走镜像:打开 ~/.m2/repository/.cache/maven-central/(或对应路径),看里面是否有 aliyun 字样缓存文件;或用 mvn -X 查看 debug 日志中实际 HTTP 请求的 URL。
当项目同时涉及中央仓、镜像、私有 Nexus、JitPack 等多个源,Maven 按以下顺序查找依赖:
.m2/repository)pom.xml 中 声明顺序依次请求远程仓库(跳过被镜像覆盖的)settings.xml 中镜像所指向的目标仓库关键点:
的值支持通配符,但匹配规则严格:external:* 不匹配 
*,!nexus 表示“所有仓库,除了 id=nexus 的”pom.xml 而非 settings.xml,避免泄露敏感地址到团队共享配置中最易被忽略的是:settings.xml 中的 激活状态会影响镜像是否启用——没激活 profile,镜像配置就等于不存在。