Maven 仓库用于存储和管理构建过程中产生的各种构件(Artifacts),包括依赖、插件和项目产物。Maven 仓库分为三种类型:本地仓库、中央仓库和远程仓库。
1. 本地仓库(Local Repository):
- 位置:默认在用户目录下的
.m2/repository文件夹 - 作用:存储从远程仓库下载的依赖和项目构建产物
- 配置:在
settings.xml中通过<localRepository>标签自定义位置 - 优势:避免重复下载,提高构建速度,支持离线构建
2. 中央仓库(Central Repository):
- URL:https://repo.maven.apache.org/maven2
- 作用:Maven 官方维护的公共仓库,包含大量开源项目
- 特点:无需配置即可使用,由 Maven 社区维护
- 限制:只能上传到中央仓库的项目需要满足严格的要求
3. 远程仓库(Remote Repository):
- 作用:企业或团队内部搭建的私有仓库,或第三方公共仓库
- 常见实现:Nexus、Artifactory、Archiva
- 配置方式:
xml<repositories> <repository> <id>company-repo</id> <url>https://repo.company.com/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
仓库查找顺序:
- 本地仓库:首先查找本地是否已存在所需构件
- 远程仓库:按配置顺序依次查找远程仓库
- 中央仓库:如果远程仓库都找不到,最后查找中央仓库
镜像配置(Mirror): 镜像用于替代远程仓库,通常用于加速下载或使用企业内部仓库:
xml<mirrors> <mirror> <id>aliyun-maven</id> <mirrorOf>central</mirrorOf> <name>Aliyun Maven Mirror</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors>
仓库认证配置:
对于需要认证的私有仓库,在 settings.xml 中配置:
xml<servers> <server> <id>company-repo</id> <username>admin</username> <password>password</password> </server> </servers>
最佳实践:
- 使用国内镜像加速中央仓库访问
- 企业内部搭建私有仓库管理内部依赖
- 区分 releases 和 snapshots 仓库,避免不稳定版本污染
- 定期清理本地仓库,释放磁盘空间
- 使用
mvn dependency:purge-local-repository清理本地依赖