Artifactory在访问虚拟存储库URL时返回HTTP 302

时间:2015-12-11 10:27:14

标签: artifactory

我遇到Artifactory v3.9.5解决工件的问题。我有以下设置:

  • 本地存储库名为“gradle-snaphot”允许快照
  • 名为“repos”的虚拟存储库,其中包含“gradle-snapshot”
  • 神器X上传到“gradle-snapshot”

现在,当我尝试直接获取工件时,它工作正常(传递了信号,但在此省略):

wget http://myrepo/artifactory/gradle-snapshot/x/SNAPSHOT/maven-metadata.xml?trace

但是当我尝试通过虚拟存储库获取工件时,它不起作用:

wget http://myrepo/artifactory/repos/x/SNAPSHOT/maven-metadata.xml?trace

wget输出是:

Resolving myrepo... xx.xxx.xxx.xx
Connecting to myrepo|xx.xxx.xxx.xx|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://myrepo/artifactory/repos/x/SNAPSHOT/maven-metadata.xml/ [following]
--2015-12-11 11:17:18--  http://myrepo/artifactory/repos/x/SNAPSHOT/maven-metadata.xml/
Reusing existing connection to myrepo:80.
HTTP request sent, awaiting response... 404 Not Found
2015-12-11 11:17:18 ERROR 404: Not Found.

Artifactory正在返回302临时移动到相同的URL,并添加了像目录表示法一样的斜杠。任何想法为什么不能以这种方式访问​​虚拟存储库?因此,我的Gradle构建无法解决此依赖关系。

1 个答案:

答案 0 :(得分:7)

此问题的根本原因是指​​向http://mirrors.ibiblio.org/pub/mirrors/maven2的远程存储库 无论您使用哪个路径,对此存储库的所有请求都将重定向到http://maven.ibiblio.org/maven2/,更重要的是请求的资源是否存在。
结果是,当从虚拟存储库请求工件时,Artifactory将在某个时刻尝试从此远程存储库获取工件,并获得302应答,该应答重定向到存储库的根目录。 Artifactory假设它获得了它正在寻找的资源(获得了200个响应代码),但返回的资源是一个文件夹,因此URL的末尾附加/。

最好的解决方案是删除此远程存储库并依赖JCenter 如果确实需要,请使用http://maven.ibiblio.org/maven2/ URL来保存重定向。