解决Maven等情景连接url时报错Server returned HTTP response code: 407 for URL

本文分析了Maven在有防火墙的环境下无法下载依赖的407错误,并提供了清除代理、手动下载及使用脚本自动下载并移至仓库的解决办法。附带阿里云Maven镜像配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven编译过程中,下载不了项目依赖的pom文件和jar包。在确认代理已经配置正确的情况下仍然出现Server returned HTTP response code: 407 for URL的错误。

原因分析

MAVEN 407 Authentication Exception,一般都出现在有墙的公司环境中,就无论怎么修改.m2/setting.xmlMAVEN_HOME/conf/setting.xml的proxy和mirror,都出现

proxyInfo ProxyInfo{host='', userName='null', port=, type='http', nonProxyHosts='null'}

在stackoverflow上搜了很多也没啥好的原因分析和解决办法,只能想办法绕过了。

解决办法

一、清除maven的代理,尝试编译。

二、手动下载

wget <filename>

如果wget命令下载不了,请确认代理是否正确配置。
如果可以下载,为了解决要下载的文件太多并且移动到maven仓库的很麻烦,我写了一个脚本放在我的github上,自动读取你要下的所有文件,用wget命令下载完并移动到maven仓库。
逻辑很简单,使用的话需要修改脚本文件的中的maven配置(如果是阿里云镜像的话不需要修改)。水平有限,代码写的很死,有需要的可以自行修改。具体使用步骤可以参考github上的README文件。

有问题欢迎提issue修改,有用的话点个star~

附阿里云镜像

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central</url>
</mirror>
### 配置 Maven 使用腾讯云 HTTPS 镜像 为了使 Maven 使用腾讯云的 HTTPS 镜像,可以通过修改 `settings.xml` 文件来实现。以下是具体的操作说明: #### 修改 `settings.xml` 文件 Maven 的配置文件通常位于 `${MAVEN_HOME}/conf/settings.xml` 或者用户的家目录下 `.m2/settings.xml` 中。如果该文件不存在,则可以创建它。 在 `<mirrors>` 节点中添加以下内容以指定腾讯云的 HTTPS 镜像作为默认镜像源: ```xml <settings> <mirrors> <!-- 添加腾讯云镜像 --> <mirror> <id>tencent-mirror</id> <!-- 自定义ID --> <name>Tencent Cloud Mirror</name> <!-- 描述名称 --> <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url> <!-- 腾讯云HTTPS镜像地址 --> <mirrorOf>*</mirrorOf> <!-- 替代所有远程仓库 --> </mirror> </mirrors> </settings> ``` 上述配置中的 `<mirrorOf>*` 表示此镜像会覆盖所有的远程仓库请求[^2]。如果有特定需求(例如仅替代某些仓库),可以根据实际情况调整为更精确的选择器,比如 `central` 来只替换中央仓库。 #### 测试配置有效性 完成以上设置后,运行以下命令测试是否能够正常拉取依赖项: ```bash mvn clean install -U ``` 参数 `-U` 强制更新快照版本的依赖项,从而验证新配置是否生效。如果没有错误提示并成功下载所需 jar 包,则表明配置无误[^3]。 #### 注意事项 - 如果项目中有自定义的远程仓库 URL,在使用通配符 `*` 可能会影响这些特殊仓库的行为。此需谨慎评估是否需要针对不同类型的仓库分别设定不同的镜像策略。 - 确保网络环境允许访问腾讯云提供的服务端口以及域名解析正确[^4]。 ```python import requests def test_mirror_reachable(): url = 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' try: response = requests.get(url, timeout=5) if response.status_code == 200: print('Mirror is reachable.') else: print(f'Mirror returned status code {response.status_code}.') except Exception as e: print(f'Failed to reach mirror: {e}') test_mirror_reachable() ``` 通过这段 Python 小脚本也可以初步检测目标镜像站点连通性情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值