记录下记录下,很神奇的问题,也不去深究了,解决就行,侧重点不在这,就把方法记录下了
问题
Maven无法下载源码
通过IDE进行下载源码,点进源码的.class文件,IDE会自动弹出Download Sources or Choose Sources
当点击Download Sources时老是报这个错
Cannot download sources
Sources not found for:
org.apache.flink:flink-streaming-java_2.12:1.11.1
个人有两台笔记本,两个笔记本IDE版本差不多,maven版本一致3.6.3,工程是同一个,居然一台笔记本可以正常下载源码,另一台就无法下载,说明根本不是source找不到问题,而是环境问题。
问题排查
首先确认maven配置是否有问题,确认没问题后开始一步步尝试解决吧
方案一 Maven的镜像换一换试一试
<!-- 阿里镜像 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com
</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
换完之后记得maven reimport一下然后再试下下载
方案二 删掉工程下的缓存和IDE配置文件
方案一不行再试此方法
IDEA的话是有个.idea文件夹、project名.iml,删掉,然后关掉窗口再重新打开这个工程,让它重建。这问题是避免你从别人那里拷贝工程过来导致环境不一致。
保险点,记得maven reimport一下然后再试下下载
方案三 找个能下载源码的同事或环境换上它的maven版本或setting.xml文件
这种方式适用于你身边有能下载源码的其他环境或者同事,粗暴点直接和他环境保持一致,maven版本setting文件这些
方案四 换个maven版本
这种方式成功率不高,但是可能有效果,我试过。。。。就很迷乱。。。我一开始用的最新的maven,最新的maven有时候还下载不出依赖,更别提依赖jar的源码了(不过这也可能是其他问题导致的并不是maven最新版本的锅,反正我就换了个maven版本就有能解决它的时候)
方案五 命令行让maven重新下载依赖并一并把源码下载下来
此方式是我试了乱七八糟各种方式后终于拨云见日的一种方案
首先cmd可以mvn -v 命令可以正常执行,主要是看是否配了maven的环境变量,因为执行maven命令的话肯定需要环境变量,没的话,配一个。
有了环境变量之后,在工程ide里打开Terminal,就在IDEA的底部可以看到,先试试mvn -v能否执行哈,不能的话还是不到IDEA里去弄了,直接cmd吧
cmd命令行终端,然后进入到工程文件目录里,就是有pom文件的那个目录里,执行如下命令
mvn dependency:resolve -Dclassifier=sources
接下来他就会下载jar和源码了
完事之后,需要去choose Source,位置就和jar在一块
警告注意
有几个可能不能下载的原因说明下,得避免
- 工程pom文件中存在多个依赖版本,或编译版本不一致。例如A依赖包含B依赖的1.2版本,然后你有另外引入B的1.1版本,此时你要下载B依赖中其中一个类源码,此时可能会下载失败,或者两个版本的源码下载要都试下。实际上还是保证不要出现这种情况
- 工程引入的依赖版本的编译版本和环境编译版本不一致,比如某flink包的scala版本是1.12,你的环境scala确是1.11版本,总之就是不对应,并且几个flink包的scala版本都不一致,很容易出现混乱,这也是我同事自测时遇到的导致下载不了源码,把他们都统一下就行了。
各位还有啥好的解决方法欢迎留言说明,有问题的地方欢迎指出!!