maven填坑记

maven填坑记

  • 遇到的问题
  • 解决方案
    • 添加镜像源
    • 在IDEA中重新导入
  • 总结

以下源码来自鸟叔的Spring全家桶,github地址: SpringAll
遇到问题部分大部分为废话,单纯为了让自己记住遇到问题的具体情形,读者可直接跳过。

遇到的问题

导包不完整,结果就是
maven填坑记_第1张图片
maven填坑记_第2张图片
第一次遇到这种情况我是懵的,以为spring-kafka包中不包括这些包(黑人问号脸)
maven填坑记_第3张图片
接下来开始骚操作了,既然里面没有,行行行,那我手动导包总可以吧(狗头)

进入https://mvnrepository.com,搜索kafka,中间省略几步版本选择的操作
maven填坑记_第4张图片
添加依赖,然后reimport一下
maven填坑记_第5张图片
maven填坑记_第6张图片
没错了,结果发现没啥用,到repository下一看,路径为 D:\java\maven\repository\org\apache\kafka\kafka_2.12\2.3.0
maven填坑记_第7张图片
好家伙,结果发现只有几百字节。。包丢失了,那行吧,手动下载
在这里插入图片描述
下载完了替换,不报红了,用同样的方法修改其他缺了的包,好不容易都不报红了,一运行,报错各种Class Not Found。

事后想一想,解决了明面上不报错的包,还有背后依赖的包呀。。。想到这,又顺势想到,那我怎么可能知道内部引用了哪些包,所以还是下好原来的包,那原来的包拉下来有问题?这时候突然想通了(别笑,在瞎忙的时候真就这么傻)。

点开Spring kafka的jar包一看,wtf?263字节
maven填坑记_第8张图片
pom文件一打开,wtf??怎么身子都没有
maven填坑记_第9张图片
正常的版本是这样的
maven填坑记_第10张图片
此外还有各种依赖关系
maven填坑记_第11张图片
难怪我IDEA里面,这个kafka的包连个三角号都没有
maven填坑记_第12张图片
正常的情况应该是这样的
maven填坑记_第13张图片
就是pom文件里,各种单纯只有compile类型的包都应该能显示出来(注意,有test标记的不显示和optional的可选,不一定显示),例如
maven填坑记_第14张图片
maven填坑记_第15张图片
所以遇到了没有三角号的,那么就要小心的,很可能跟我一样,maven的配置文件有问题。
maven填坑记_第16张图片

解决方案

添加镜像源

打开maven的配置文件,路径为安装目录下的conf目录,例如D:\java\maven\apache-maven-3.6.0\conf,注意别以txt格式打开,不然可能会出现,你看到的情形是这样的
maven填坑记_第17张图片
而实际是这样的(没错,多了一些神秘代码)
maven填坑记_第18张图片
在mirror里面添加几个镜像源,参考
下面是几个常用的maven长仓库的镜像地址:
http://repo1.maven.org/maven2 (这个仓库最全,推荐使用,但有一点慢)
http://maven.apache.org/download.cgi
http://mvnrepository.com/ (这个仓库速度最快,国内有镜像服务器)

例如我的是:

<mirror>
   	<id>nexus-aliyun</id>
   	<mirrorOf>*</mirrorOf>
   	<name>Nexus aliyun</name>
   	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
   </mirror>

 <!-- 这个仓库速度最快,国内有镜像服务器 -->
   <mirror>
   	<id>mvnrepository</id>
   	<mirrorOf>*</mirrorOf>
   	<name>mvnrepository</name>
   	<url>http://mvnrepository.com/</url>
   </mirror>


 <!-- 这个仓库最全,推荐使用,但有一点慢 -->
   <mirror>
	<id>kousihao Maven</id>
	<mirrorOf>all repository mirror</mirrorOf>
	<name>*</name>
	<url>http://repo1.maven.org/maven2</url>
   </mirror>

当然名字是我自己起的,比较随便,建议能找到通用的就别自己起。

在cmd命令行中,执行mvn help:system,将远程镜像源的jar包拉取过来,如果报ERROR,那么可能是配置不对,例如有神秘代码。

在IDEA中重新导入

在导入之前,需要到repository中将对应的文件夹删除,否则是不会重新导入的。
例如
在这里插入图片描述
maven填坑记_第19张图片
删除了之后,再reimport重新导入
maven填坑记_第20张图片
maven填坑记_第21张图片
呐,看到三角号出来就放心了。

总结

如果遇到一直循环解决不了的问题,那么可能就是方向错了,这时候要停下来,仔细想想,看看其他解决办法(致自己)。

你可能感兴趣的:(maven填坑记)