Bootstrap

maven下载不到源码:Cannot download sources Sources not found for:

记录下记录下,很神奇的问题,也不去深究了,解决就行,侧重点不在这,就把方法记录下了

问题

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版本都不一致,很容易出现混乱,这也是我同事自测时遇到的导致下载不了源码,把他们都统一下就行了。

各位还有啥好的解决方法欢迎留言说明,有问题的地方欢迎指出!!

;