今天复习一下怎么手动导入依赖,原因是今天一个单子中有一个依赖在阿里云仓库中找不到,想手动导入一下,结果发现已经忘记怎么操作了,就顺便复习一下,结果遇到了一堆bug。
- 先去下载所需要的依赖,此处以httpclient为例
-
去本地maven仓库根据依赖上的目录找到指定包maven-repo\org\apache\httpcomponents\httpclient
-
创建指定版本目录,把下载好的jar包导进去,
-
idea alt+F12打开命令行,或者直接找到项目的目录cmd
-
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
结果上面的代码报错了
报错的原因是这个命令行用的是Windows的powershell,而不是cmd。
好的,现在换成cmd,运行依旧报错,原因是代码太长它粘贴不全。
好好好,这么玩是吧?
直接打开项目目录,路径输入cmd,粘贴,回车。
什么意思?就是说它本地仓库不让你自己放东西进去
很棒,我给你点赞好吧
-
在maven文件夹创建other-repo文件夹。好的,我现在想要一个跟maven原仓库一样的,层级清晰的文件夹来存放jar包。但是这么多层级我又不想手动创建,写代码创建吧
-
把上面代码中的路径复制下来,把路径中maven-repo改为自己创建的other-repo,删掉后面的xxx.jar。
好的跑起来,创建失败,对了,创建多级目录,要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中改成新的地址。
看似打包成功了,实则版本依然报红还是有,检查了一下,原来项目里已经有了一个该依赖,重复导入了,删掉那个依赖,reload一下maven,解决问题。
最后的最后,删掉本地仓库中原来我们放进去的jar包,刚刚已经剪切出来了,把所在文件夹也删掉,不然可能又是个让人睡不着的bug。
省流:
- 按照文章第一步下载jar包
- 创建文件夹,jar包放进去,复制文件地址(带上文件名本身哦)。
- 填写下面的代码
mvn install:install-file -Dfile=【刚复制的路径】 -DgroupId=【依赖的GroupId】 -DartifactId=【依赖的ArtifactId】 -Dversion=【依赖的Version】 -Dpackaging=jar
- 在项目根目录下打开cmd 代码粘贴运行,打开ide,reload一下maven,不行的话注释掉依赖,reload,取消注释再reload,ide可能有缓存,导致显示不及时。