因为我的一个测试操场项目需要来自Maven Central以外的存储库的一些依赖项,所以我将其添加到POM中:
<repository>
<id>jenkins-releases</id>
<name>Jenkins Releases</name>
<url>https://repo.jenkins-ci.org/releases/</url>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
这在本地工作,但在GitHub工作流中不起作用,参见例如此生成日志。在每个生成矩阵日志中,存在相同的错误:
org.eclipse.aether.transfer.NoRepositoryConnectorException:
Blocked mirror for repositories:
[repo.jenkins-ci.org (http://repo.jenkins-ci.org/public/, default, releases+snapshots)]
我感到困惑,不是因为Maven 3.8.1+阻塞了HTTP,这是众所周知的事实,而是因为我配置了https://
,而不是http://
。那么,为什么Maven仍然试图解析未加密的URL呢?服务器上是否有我不知道的重定向?curl -v -L
调用不会显示任何悬念,而且我还可以在web浏览器中通常在HTTPS下浏览存储库URL。
我知道这个问题,但答案并不能帮助我理解手头的问题。因此,不要很快将其视为重复,因为不是关于如何在Maven 3.8.1+中禁用HTTP阻塞的,而是关于为什么在不使用HTTP存储库时遇到此问题的问题。
因为它只发生在GitHub操作上,这是特定于GitHub的问题吗?他们会阻止任何我的本地工作站没有阻止的东西吗?
发布于 2022-02-17 07:20:42
在我更好地理解了这条日志行之后,我发现了原因:
Failed to collect dependencies at
org.jenkins-ci.main:jenkins-core:jar:2.102
-> org.jenkins-ci:trilead-ssh2:jar:build-217-jenkins-11
-> org.connectbot.jbcrypt:jbcrypt:jar:1.0.0:
Failed to read artifact descriptor for org.connectbot.jbcrypt:jbcrypt:jar:1.0.0:
Could not transfer artifact org.connectbot.jbcrypt:jbcrypt:pom:1.0.0
from/to maven-default-http-blocker (http://0.0.0.0/):
Blocked mirror for repositories:
[repo.jenkins-ci.org (http://repo.jenkins-ci.org/public/, default, releases+snapshots)]
我遵循依赖跟踪,检查相应的POMs,实际上,在trilead-ssh2
的POM中,我看到了一个简单的HTTP存储库配置。因此,不是我自己的配置,是错误的,而是依赖的配置。
也许,定义一个抑制默认封锁的虚拟镜像可能会有所帮助,但在我的示例中,我可以将jenkins-core
升级到更新的版本,不再依赖于POMs中有HTTP存储库的库。
https://stackoverflow.com/questions/71151981
复制相似问题