手动导入maven依赖(所有的坑我都走了一遍)

88 阅读3分钟

今天复习一下怎么手动导入依赖,原因是今天一个单子中有一个依赖在阿里云仓库中找不到,想手动导入一下,结果发现已经忘记怎么操作了,就顺便复习一下,结果遇到了一堆bug。

  1. 先去下载所需要的依赖,此处以httpclient为例

1695297619382.png

  1. 去本地maven仓库根据依赖上的目录找到指定包maven-repo\org\apache\httpcomponents\httpclient

  2. 创建指定版本目录,把下载好的jar包导进去,

  3. idea alt+F12打开命令行,或者直接找到项目的目录cmd

  4. mvn install:install-file -Dfile=【jar包的完整路径】 -DgroupId=【依赖的GroupId】 -DartifactId=【依赖的ArtifactId】 -Dversion=【依赖的Version】 -Dpackaging=【依赖的Packaging类型】

mvn install:install-file -Dfile=D:\libs\apache-maven-3.6.3\maven-repo\org\apache\httpcomponents\httpclient\4.3.5\httpclient-4.3.5.jar -DgroupId=org.apache.httpcomponents -DartifactId=httpclient -Dversion=4.3.5 -Dpackaging=jar

结果上面的代码报错了

2.png

报错的原因是这个命令行用的是Windows的powershell,而不是cmd。

3.png 好的,现在换成cmd,运行依旧报错,原因是代码太长它粘贴不全

好好好,这么玩是吧?

直接打开项目目录,路径输入cmd,粘贴,回车。

4.png

什么意思?就是说它本地仓库不让你自己放东西进去

很棒,我给你点赞好吧

  1. 在maven文件夹创建other-repo文件夹。好的,我现在想要一个跟maven原仓库一样的,层级清晰的文件夹来存放jar包。但是这么多层级我又不想手动创建,写代码创建吧

  2. 把上面代码中的路径复制下来,把路径中maven-repo改为自己创建的other-repo,删掉后面的xxx.jar。

5.png

好的跑起来,创建失败,对了,创建多级目录,要mkdirs(),要加s

贴出代码

import java.io.File;
import java.io.IOException;

public class create {
    public static void main(String[] args) {
        File file = new File("D:\libs\apache-maven-3.6.3\other-repo\org\apache\httpcomponents\httpclient\4.3.5");
        boolean newFile = false;
        try {
            newFile = file.mkdirs();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(newFile?"创建成功":"创建失败");
    }
}

好的,把原来放进本地仓库的jar文件剪切过来,cmd中改成新的地址。

6.png

看似打包成功了,实则版本依然报红还是有,检查了一下,原来项目里已经有了一个该依赖,重复导入了,删掉那个依赖,reload一下maven,解决问题。

最后的最后,删掉本地仓库中原来我们放进去的jar包,刚刚已经剪切出来了,把所在文件夹也删掉,不然可能又是个让人睡不着的bug。

省流:

  1. 按照文章第一步下载jar包
  2. 创建文件夹,jar包放进去,复制文件地址(带上文件名本身哦)。
  3. 填写下面的代码
mvn install:install-file -Dfile=【刚复制的路径】 -DgroupId=【依赖的GroupId】 -DartifactId=【依赖的ArtifactId】 -Dversion=【依赖的Version】 -Dpackaging=jar
  1. 在项目根目录下打开cmd 代码粘贴运行,打开ide,reload一下maven,不行的话注释掉依赖,reload,取消注释再reload,ide可能有缓存,导致显示不及时。