问题描述
在 idea 中,用 maven 下载依赖包的源码时,总是出现 “Cannot download sources” 的提示,源码下不下来,就只能查看 .class文件,缺少注释,不利于源码学习。
软件版本
IntelliJ IDEA:2021.2.2 (Community Edition)
maven: apache-maven-3.8.3
idea 的 maven 路径配置
解决办法
方案一
“Maven home path” 不要自己设置,使用 Bundled(Maven 3)。
方案二
#MAVEN_HOME/conf/settings.xml 注释掉下面几行。(#MAVEN_HOME 表示 maven 的安装路径)
注意:如果 maven home path 使用的是 Bundled(Maven 3),maven 的路径是:/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
maven 从 3.8.1 开始,在默认配置文件中增加了一组标签,如果仓库镜像是 http 而不是 https 就会被拦截禁止访问,我的配置文件中是阿里云 http 的 nexus 仓库地址,所以请求时被拦截了。
怎么发现是被拦截了呢?
Help - Show Log in Finder,查看 idea 的日志
方案三
换成 https 的仓库,参考 maven settings 配置。
<mirrors>
<mirror>
<id>nju_mirror</id>
<mirrorOf>central</mirrorOf>
<url>https://repo.nju.edu.cn/repository/maven-public/</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>sjtugmaven</id>
<mirrorOf>central</mirrorOf>
<name>sjtug maven</name>
<url>https://mirrors.sjtug.sjtu.edu.cn/maven-central/</url>
</mirror>
<mirror>
<id>nexus-tencentyun</id>
<mirrorOf>central</mirrorOf>
<name>tencent</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
<mirror>
<id>huaweicloud</id>
<mirrorOf>central</mirrorOf>
<name>HuaWei</name>
<url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>
<mirror>
<id>apachemaven</id>
<mirrorOf>central</mirrorOf>
<name>apache repo</name>
<url>https://repo.maven.apache.org/maven2/</url>
</mirror>
<mirror>
<id>repomaven</id>
<mirrorOf>central</mirrorOf>
<name>central repo</name>
<url>https://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>apache snapshots</mirrorOf>
<name>aliyun apache</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
</mirrors>