maven 3.8.3 Cannot download sources 问题记录

1,153 阅读1分钟

问题描述

在 idea 中,用 maven 下载依赖包的源码时,总是出现 “Cannot download sources” 的提示,源码下不下来,就只能查看 .class文件,缺少注释,不利于源码学习。

软件版本

IntelliJ IDEA:2021.2.2 (Community Edition)
maven: apache-maven-3.8.3
idea 的 maven 路径配置 image.png

解决办法

方案一

“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 的日志 image.png

方案三

换成 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>