Maven之仓库

1.  什么是仓库    

    Maven仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

    Maven仓库能帮助我们管理构建

2.  仓库类型  

    image

    1.  本地仓库

        Maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建。

        运行maven的时候,maven所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

        默认情况下,每个用户在自己的家目录下都有一个.m2/repository的仓库目录。

        可以通过修改maven的settings.xml文件定义另一个路径

        清理本地仓库:

          mvn dependency:purge-local-repository  或者手动删除.m2/repository目录

    2.  中央仓库

        Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

        中央仓库包含了绝大多数流行的开源 Java 构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的 Java 项目依赖的构件都可以在这里下载到。

        中央仓库的关键概念:

          1.  这个仓库由Maven社区管理

          2.  不需要配置

          3.  需要通过网络才能访问

        中央仓库默认地址:  https://repo.maven.apache.org/maven2/

    3.  远程仓库

        1.  阿里云仓库

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

        2.  私服仓库            

            image

            发布到私服

            1.  在pom.xml中配置

<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>http://your-nexus/repository/maven-releases</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>http://your-nexus/repository/maven-snapshots</url>
    </snapshotRepository>
</distributionManagement>

            2.  在settings.xml配置认证

<servers>
    <server>
        <id>nexus-releases</id>
        <username>deploy-user</username>
        <password>deploy-pwd</password>
    </server>
</servers>

3.  Maven依赖搜索顺序

    1.  在本地仓库中搜索,如果找不到,执行步骤2,如果找到了则执行其他操作。

    2.  在中央仓库中搜索,如果找不到,并且有一个或多个仓库已经设置,则执行步骤4,如果找到了则下载到本地仓库中以备将来引用。

    3.  如果远程仓库没有被设置,停滞处理并抛出错误。

    4.  在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则Maven将停止处理并抛出错误。

4.  常见错误

    1.  依赖下载失败现象

        could not transfer artifact

        解决:

          检查网络连接

          验证仓库URL是否正确

          临时关闭防火墙

    2.  认证失败现象:401 Unauthorized

        解决:

          检查settings.xml中的<server>配置

          确认用户名密码是否有仓库访问权限

    3.  依赖冲突

        排查:mvn dependency:tree -Dverbose

        解决:在 <dependencyManagement> 中统一版本      

posted @ 2025-11-27 11:48  奋斗史  阅读(64)  评论(0)    收藏  举报