You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Maven使依赖从远程下载后第二次起从本地m2目录获取

Maven本地优先拉取依赖配置方案

Maven默认会优先读取本地~/.m2/repository(也就是你说的m2路径)下的已有依赖,默认仅对SNAPSHOT版本依赖每日检查远程更新、RELEASE版本不会重复拉取。如果要彻底避免每次构建都查询远程站点,可以通过以下配置实现:

方案1:全局配置(推荐,对所有Maven项目生效)

修改Maven全局配置文件settings.xml,文件默认路径为:

  • 当前用户目录下:${user.home}/.m2/settings.xml(优先读取)
  • Maven安装目录下:${MAVEN_HOME}/conf/settings.xml

在配置文件中调整对应规则:

<settings>
  <!-- 确认本地仓库路径,默认就是这个,不用改的话可以不写 -->
  <localRepository>${user.home}/.m2/repository</localRepository>
  
  <profiles>
    <profile>
      <id>local-first</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2</url>
          <releases>
            <updatePolicy>never</updatePolicy> <!-- 已有RELEASE版本永远不查远程更新 -->
          </releases>
          <snapshots>
            <updatePolicy>never</updatePolicy> <!-- 已有SNAPSHOT版本永远不查远程更新 -->
          </snapshots>
        </repository>
        <!-- 把你用到的spring仓库也加进来配置同样规则 -->
        <repository>
          <id>spring-milestones</id>
          <url>https://repo.spring.io/milestone</url>
          <releases><updatePolicy>never</updatePolicy></releases>
          <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
          <id>spring-snapshots</id>
          <url>https://repo.spring.io/snapshot</url>
          <releases><enabled>false</enabled></releases>
          <snapshots><updatePolicy>never</updatePolicy></snapshots>
        </repository>
      </repositories>
      <!-- 插件仓库也配置同样规则 -->
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2</url>
          <releases><updatePolicy>never</updatePolicy></releases>
          <snapshots><updatePolicy>never</updatePolicy></snapshots>
        </pluginRepository>
        <pluginRepository>
          <id>spring-milestones</id>
          <url>https://repo.spring.io/milestone</url>
          <releases><updatePolicy>never</updatePolicy></releases>
          <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
          <id>spring-snapshots</id>
          <url>https://repo.spring.io/snapshot</url>
          <releases><enabled>false</enabled></releases>
          <snapshots><updatePolicy>never</updatePolicy></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
</settings>

方案2:单项目配置(仅对当前Spring Boot项目生效)

直接修改你当前项目的pom.xml,给已配置的仓库规则增加updatePolicy配置即可,修改后的repositories和pluginRepositories部分如下:

<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <releases>
      <updatePolicy>never</updatePolicy>
    </releases>
  </repository>
  <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <updatePolicy>never</updatePolicy>
    </snapshots>
  </repository>
</repositories>
<pluginRepositories>
  <pluginRepository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <releases>
      <updatePolicy>never</updatePolicy>
    </releases>
  </pluginRepository>
  <pluginRepository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <updatePolicy>never</updatePolicy>
    </snapshots>
  </pluginRepository>
</pluginRepositories>

方案3:单次构建临时生效

如果不需要永久配置,只是某次构建不想走远程,直接在构建命令后加-o参数开启离线模式即可,Maven会完全读取本地仓库内容,不会发起任何远程请求:

# 示例:离线模式打包项目
mvn clean package -o

注意事项

  • 配置updatePolicy:never后,如果需要拉取远程最新的SNAPSHOT依赖,可临时加-U参数执行构建强制更新:mvn clean package -U
  • 离线模式下如果本地缺少对应依赖,会直接构建失败,需要先关闭离线模式完成依赖下载后再使用

内容的提问来源于stack exchange,提问作者Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:15:01