Maven 仓库

什么是 Maven 仓库?

Maven 仓库是存储项目构件(artifacts)的地方,包括 JAR 文件、POM 文件、插件等。Maven 通过仓库来管理项目依赖和插件。

仓库类型

1. 本地仓库(Local Repository)

位于本地机器上的仓库,默认位置:~/.m2/repository

2. 中央仓库(Central Repository)

Maven 官方维护的公共仓库:https://repo1.maven.org/maven2/

3. 远程仓库(Remote Repository)

除中央仓库外的其他网络仓库

仓库配置

配置本地仓库

settings.xml 中配置:

<settings>
    <localRepository>/path/to/local/repo</localRepository>
</settings>

配置远程仓库

pom.xml 中配置:

<repositories>
    <repository>
        <id>spring-releases</id>
        <name>Spring Releases</name>
        <url>https://repo.spring.io/release</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

配置插件仓库

<pluginRepositories>
    <pluginRepository>
        <id>spring-plugins</id>
        <name>Spring Plugins</name>
        <url>https://repo.spring.io/plugins-release</url>
    </pluginRepository>
</pluginRepositories>

镜像配置

镜像可以替代原始仓库,通常用于加速下载或企业内部管理:

配置阿里云镜像

<!-- settings.xml -->
<mirrors>
    <mirror>
        <id>aliyun-central</id>
        <mirrorOf>central</mirrorOf>
        <name>Aliyun Central</name>
        <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    
    <mirror>
        <id>aliyun-public</id>
        <mirrorOf>*</mirrorOf>
        <name>Aliyun Public</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
</mirrors>

常用国内镜像

镜像源 URL 说明
阿里云 https://maven.aliyun.com/repository/public 速度快,稳定性好
华为云 https://repo.huaweicloud.com/repository/maven/ 华为维护
腾讯云 https://mirrors.cloud.tencent.com/nexus/repository/maven-public/ 腾讯维护

仓库认证

访问私有仓库需要配置认证信息:

<!-- settings.xml -->
<servers>
    <server>
        <id>private-repo</id>
        <username>your-username</username>
        <password>your-password</password>
    </server>
</servers>
<!-- pom.xml -->
<repositories>
    <repository>
        <id>private-repo</id>
        <url>https://private.company.com/maven</url>
    </repository>
</repositories>

仓库搜索顺序

  1. 本地仓库
  2. settings.xml 中配置的镜像
  3. POM 中配置的远程仓库
  4. 父 POM 中配置的仓库
  5. 中央仓库

部署到仓库

配置分发管理

<distributionManagement>
    <repository>
        <id>releases</id>
        <name>Release Repository</name>
        <url>https://nexus.company.com/repository/maven-releases/</url>
    </repository>
    
    <snapshotRepository>
        <id>snapshots</id>
        <name>Snapshot Repository</name>
        <url>https://nexus.company.com/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

部署命令

# 部署到远程仓库 $ mvn deploy # 仅安装到本地仓库 $ mvn install

仓库管理工具

Nexus Repository Manager

Artifactory

仓库最佳实践

1. 本地仓库管理

# 清理本地仓库 $ mvn dependency:purge-local-repository # 下载源码和文档 $ mvn dependency:sources $ mvn dependency:resolve -Dclassifier=javadoc

2. 依赖分析

# 查看依赖树 $ mvn dependency:tree # 分析依赖 $ mvn dependency:analyze # 查看有效 POM $ mvn help:effective-pom

3. 仓库配置建议

常见问题解决

1. 依赖下载失败

解决方案:

2. 本地仓库损坏

# 删除损坏的构件 $ rm -rf ~/.m2/repository/com/example/my-artifact # 重新下载 $ mvn dependency:resolve

3. 版本冲突

# 查看依赖冲突 $ mvn dependency:tree -Dverbose # 排除冲突依赖 <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions>
注意:配置镜像时要注意 mirrorOf 的值,使用 * 会镜像所有仓库,可能影响某些特定仓库的访问。

仓库性能优化

# 离线模式构建 $ mvn clean install -o # 强制更新快照 $ mvn clean install -U