万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • Maven

    • Maven 简介和安装
    • Maven仓库
    • Maven 依赖机制
    • 解决Maven无法自动下载依赖的问题
      • 现象说明
      • 解决思路
      • 解决方案
      • 补充.lastUpdated文件
    • Maven POM
    • Hello-Maven
    • Maven插件
    • Maven快照
    • Maven常用命令
    • Maven 模块化开发
  • Issue

  • Maven
  • Maven
2021-03-09
目录

解决Maven无法自动下载依赖的问题

# 解决Maven无法自动下载依赖的问题

# 现象说明

无法下载依赖的情况大致有两类:

  • 无法通过 Maven 中央仓库提供的坐标下载(也许是网络环境导致)
  • 类库没有上传至中央仓库只能通过官网或其它渠道下载

# 解决思路

  • 手动管理依赖,将依赖按传统的方式放入 libs 目录中。缺点是需要手动管理依赖版本。
  • 将依赖安装到本地仓库中,按照 Maven 下载依赖的优先级,会优先查找本地仓库中的依赖。缺点是协同开发时,其他开发人员会因为本地缺少依赖导致项目启动报错。

# 解决方案

以上解决思路虽然都可以解决缺少依赖的问题,但操作起来不太优雅,此时我们可以使用 Maven 提供的插件来解决这个问题

pom.xml 增加插件配置,关键配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <executions>
                <execution>
                    <id>install-external-kaptcha</id>
                    <!-- 触发时机:执行 mvn clean 命令时自动触发插件 -->
                    <phase>clean</phase>
                    <configuration>
                        <!-- 存放依赖文件的位置 -->
                        <file>${project.basedir}/libs/kaptcha-2.3.2.jar</file>
                        <repositoryLayout>default</repositoryLayout>
                        <!-- 自定义 groupId -->
                        <groupId>com.google.code.kaptcha</groupId>
                        <!-- 自定义 artifactId -->
                        <artifactId>kaptcha</artifactId>
                        <!-- 自定义版本号 -->
                        <version>2.3.2</version>
                        <!-- 打包方式 -->
                        <packaging>jar</packaging>
                        <!-- 是否自动生成 POM -->
                        <generatePom>true</generatePom>
                    </configuration>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

通过该插件,我们可以在执行 mvn clean 命令时将项目所需要的依赖自动安装进本地仓库

# 补充.lastUpdated文件

项目使用maven管理jar包,很容易因为各种原因(网速慢、断网)导致jar包下载不下来,出现很多.lastUpdated文件。这些文件一个一个删除太麻烦。下面是全部删除的方法

win系统(CMD 以管理员运行):

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i

bat脚本,拖入到maven仓库目录执行:

for /r %%i in (*.lastUpdated) do del "%%i"

linux系统:

find /app/maven/localRepository -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \; 
上次更新: 5/30/2023, 10:03:37 PM
Maven POM

Maven POM→

最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式