Artifactory虚拟仓库:无法下载某些文件(发送到客户端的零字节,但预期的XYZ字节)

时间:2016-07-23 03:39:53

标签: maven virtual artifactory

我正在使用Artifactory Pro版本:3.6.0。我有几个远程repos(缓存)配置代理到不同的外部回购(如https://repo1.maven.org/maven2/..。) 我还配置了虚拟仓库,其中包括所有远程仓库。 (例如:http://mydomain/artifactory/remote-repos/..。)

Artifactory服务器重启后,我意识到一些maven构建开始失败,因为某些maven插件相关的pom文件(依赖项)无法从Artifactory下载/获取。

我注意到该文件无法通过虚拟仓库URL下载,但可以通过远程仓库URL下载。

例如:

  • 使用远程repo直接URL(工作):http://mydomain/artifactory/ maven-apache-cache /org/apache/maven/maven-parent/26/maven-parent-26.pom < / LI>
  • 使用虚拟仓库网址(无效):http://mydomain/artifactory/ remote-repos /org/apache/maven/maven-parent/26/maven-parent-26.pom

(只有1-2个maven插件相关的pom文件无法下载;其余文件下载好了。)

我需要使用虚拟仓库URL,因为这是在settings.xml文件(镜像中央缓存)中配置的方式

我做了很多不同的调查:

  1. 清除Artifactory代理缓存和所有构建服务器maven缓存;这些被迫重新缓存文件
  2. 查看Artifactory日志(信息和调试级别)

    ...

    [DEBUG](o.s.j.d.DataSourceUtils:110) - 从DataSource获取JDBC连接

    [DEBUG](oasduJdbcHelper:98) - 在521032 nanos中返回的查询:'SELECT * FROM nodes WHERE repo ='remote-repos'AND node_path ='org / apache / maven / maven-parent / 26'AND node_name ='maven-parent-26.pom''

    [DEBUG](o.s.j.d.DataSourceUtils:327) - 返回与DataSource的JDBC连接

    [DEBUG](o.a.r.RepoRequestContext:71) - 8b83e9a2 get admin remote-repos:org / apache / maven / maven-parent / 26 / maven-parent-26.pom将所请求的资源标识为文件

    [DEBUG](oarRepoRequestContext:71) - 8b83e9a2 get admin remote-repos:org / apache / maven / maven-parent / 26 / maven-parent-26.pom请求的资源是一个普通的工件 - 使用普通的内容句柄长度'40751'

    [DEBUG](o.s.b.f.s.DefaultListableBeanFactory:523) - 返回单例bean'pluginsAddonDefaultImpl'的缓存实例

    [DEBUG](o.s.b.f.s.DefaultListableBeanFactory:523) - 返回单例bean的缓存实例'org.artifactory.addon.plugin.PluginsAddonImpl#0'

    [DEBUG](oarRepoRequestContext:71) - 8b83e9a2 get admin remote-repos:org / apache / maven / maven-parent / 26 / maven-parent-26.pom执行任何可能存在的BeforeDownload用户插件

    [DEBUG](o.a.r.RepoRequestContext:71) - 8b83e9a2 get admin remote-repos:org / apache / maven / maven-parent / 26 / maven-parent-26.pom响应所选内容句柄

    [DEBUG](o.a.r.RequestResponseHelper:71) - 发送回“remote-repos:org / apache / maven / maven-parent / 26 / maven-parent-26.pom”的正文回复。原始资源大小:40751,实际大小:40751。

    [WARN](o.a.r.ArtifactoryResponseBase:57) - 发送到客户端的零字节,但预计为40751字节。

    [DEBUG](o.a.r.RepoRequestContext:71) - 8b83e9a2 get admin remote-repos:org / apache / maven / maven-parent / 26 / maven-parent-26.pom请求成功

    ...

  3. 检查Artifactory上是否存在文件:存在且可以使用远程repo URL(非虚拟仓库URL)下载;见上文。

  4. 尝试重启Artifactory几次(重启没有问题)
  5. 创建了一个新的Artifactory虚拟仓库,并开始使用新的URL,但发生了与旧的相同的事情
  6. 任何人都知道为什么有些文件(例如maven-parent-26.pom)无法使用虚拟仓库URL从Artifactory下载?

    感谢。

1 个答案:

答案 0 :(得分:0)

这确实很奇怪。 当您在虚拟存储库中配置include / exclude patterns时,我唯一能想到的就是导致文件无法在虚拟中访问。 也许你可以先打破它并尝试直接使用curl从远程仓库解决pom文件,如下所示:

curl -uadmin:password http://localhost:8081/artifactory/my-remote/path/to/pom

和虚拟回购一次,如此:

curl -uadmin:password http://localhost:8081/artifactory/my-virtual/path/to/pom

首先确保只在虚拟存储库中包含这个远程存储库。