maven 配置加速源浅析

1,441 阅读2分钟

配置操作

通过 mirrorOf 配置maven加速源

在maven的settings.xml文件里增加以下配置

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>

原理浅析

仓库配置

拉取代码的仓库配置pom.xml

<repositories>
    <repository>
        <id>repo1</id>
        <name>remote repository</name>
        <url>http://localhost:9999/content1/</url>
    </repository>
    <repository>
        <id>repo2</id>
        <name>remote repository</name>
        <url>http://localhost:9999/content2/</url>
    </repository>
</repositories>

发布代码的仓库配置pom.xml

<!-- distributionManagement 配置发布时候的路径 -->
<distributionManagement>
    <!-- repository 配置上传发布版本时的路径 -->
    <repository>
        <id>releases</id>
        <name>Release Repository</name>
        <url>http://localhost:9999/repositories/releases/</url>
    </repository>
    <!-- snapshotRepository 配置上传快照版本时的路径 -->
    <snapshotRepository>
        <id>snapshots</id>
        <name>Snapshot Repository</name>
        <url>http://localhost:9999/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

仓库密码配置settings.xml

<!--maven连接nexus需要验证用户名和密码-->
<server>
    <id>releases</id>
    <username>admin</username>
    <password>admin123</password>
</server>
  • < repository >节点下的< id >对应setting.xml文件中的server的id
  • 需要在settings里配置对应仓库的账号密码,如果不配置则会提示401信息
  • jar包上传时maven会根据版本号里是否包含snapshots来判断是不是属于快照版本
  • 上传正式版本,pom.xml文件version中不能有SNAPSHOT,快照版本才有

maven仓库三种类型

  • 本地 (local)

    本地仓库就是本地maven在settings文件里属性配置的路径地址

  • 中央 (central)

    • 中央仓库就是由maven社区提供的仓库,包含了大量常用的库。
    • 这个仓库由maven社区管理维护
    • 不需要配置,默认就可以读取
    • 需要通过网络才可以访问
  • 远程 (remote)

    远程仓库就是开发人员自己定制的仓库,也就是常说的私服

maven 依赖加载顺序

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

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

  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。

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

mirrorOf 配置说明

  1. 匹配所有远程仓库。

    <mirrorOf>*</mirrorOf> 
    
  2. 匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。

    <mirrorOf>external:*</mirrorOf> 
    
  3. 匹配仓库repo1repo2,使用逗号分隔多个远程仓库。

    <mirrorOf>repo1,repo2</mirrorOf> 
    
  4. 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

        <mirrorOf>*,!repo1</miiroOf> 
    

加速原理

mirrorOf 的配置重新定义了远程仓库地址

即上述配置中将mirrorOf配置为central 相当于将中央仓库路径改到了阿里云的仓库

maven 加载jar包指令

# 重新加载所有的jar
mvn dependency:sources
# 生成idea项目配置文件
mvn -U idea:idea

菜鸟:www.runoob.com/maven/maven…