我正面临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构建无法解决此依赖关系.
此问题的根本原因是指向http://mirrors.ibiblio.org/pub/mirrors/maven2的远程存储库.无论您使用哪个路径
,对此存储库的所有请求都将重定向到http://maven.ibiblio.org/maven2/,更重要的是请求的资源是否存在.
结果是,当从虚拟存储库请求工件时,Artifactory将在某个点尝试从此远程存储库获取工件,并将获得302应答,该应答将重定向到存储库的根目录.Artifactory假设它获得了它正在寻找的资源(获得了200个响应代码),但返回的资源是一个文件夹,因此URL的末尾附加/.
最好的解决方案就是删除这个远程存储库并依赖JCenter.
如果确实需要,请使用http://maven.ibiblio.org/maven2/ URL来保存重定向.