maven填坑记
以下源码来自鸟叔的Spring全家桶,github地址: SpringAll
遇到问题部分大部分为废话,单纯为了让自己记住遇到问题的具体情形,读者可直接跳过。
遇到的问题
导包不完整,结果就是
第一次遇到这种情况我是懵的,以为spring-kafka包中不包括这些包(黑人问号脸)
接下来开始骚操作了,既然里面没有,行行行,那我手动导包总可以吧(狗头)
进入https://mvnrepository.com,搜索kafka,中间省略几步版本选择的操作
添加依赖,然后reimport一下
没错了,结果发现没啥用,到repository下一看,路径为 D:\java\maven\repository\org\apache\kafka\kafka_2.12\2.3.0
好家伙,结果发现只有几百字节。。包丢失了,那行吧,手动下载
下载完了替换,不报红了,用同样的方法修改其他缺了的包,好不容易都不报红了,一运行,报错各种Class Not Found。
事后想一想,解决了明面上不报错的包,还有背后依赖的包呀。。。想到这,又顺势想到,那我怎么可能知道内部引用了哪些包,所以还是下好原来的包,那原来的包拉下来有问题?这时候突然想通了(别笑,在瞎忙的时候真就这么傻)。
点开Spring kafka的jar包一看,wtf?263字节
pom文件一打开,wtf??怎么身子都没有
正常的版本是这样的
此外还有各种依赖关系
难怪我IDEA里面,这个kafka的包连个三角号都没有
正常的情况应该是这样的
就是pom文件里,各种单纯只有<scope>compile</scope>类型的包都应该能显示出来(注意,有test标记的不显示和optional的可选,不一定显示),例如
所以遇到了没有三角号的,那么就要小心的,很可能跟我一样,maven的配置文件有问题。
解决方案
添加镜像源
打开maven的配置文件,路径为安装目录下的conf目录,例如D:\java\maven\apache-maven-3.6.0\conf,注意别以txt格式打开,不然可能会出现,你看到的情形是这样的
而实际是这样的(没错,多了一些神秘代码)
在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中将对应的文件夹删除,否则是不会重新导入的。
例如
删除了之后,再reimport重新导入
呐,看到三角号出来就放心了。
总结
如果遇到一直循环解决不了的问题,那么可能就是方向错了,这时候要停下来,仔细想想,看看其他解决办法(致自己)。