java - 从 Artifactory 远程存储库下载大型 Artifact

标签 java maven gradle repository artifactory

我遇到以下问题:我正在尝试为托管在同一公司内不同站点的 Maven 存储库创建本地缓存。因此,我设置了 Artifactory OSS,创建了几个指向场外服务器的远程存储库,一般来说,一切都按预期工作,除了几个异常大的依赖项之外。请注意,它们不是包含几兆字节编译代码的 jar,而是充满图像数据的 zip 存档。最大的一个本身就有 8GB。

我的 gradle 构建每次都会失败,因为我的本地 Artifactory 回复该 Artifact 确实存在,尝试下载它,然后导致 WebSocketTimeout。当我直接访问场外服务器时,不会发生这种情况。当我取消选中“本地存储”时,它也可以正常工作,但这与我想要实现的目标完全相反。

有什么想法吗?

最佳答案

这里有几个可能起作用的超时。当您要求 Artifactory 为您下载并缓存某些内容时,它会:

  1. 完全下载文件
  2. 完成后,它会将文件流式传输给您

这意味着对于较大的文件,Artifactory 需要一段时间才能将任何内容发送回客户端。如果客户端(或介于两者之间的某种东西,如反向代理)有一个小的超时,这可能会成为一个问题。 Artifactory 本身也有一个套接字超时设置。

如果文件在下载失败后的某个时刻出现在 Artifactory 中,则超时问题可能出现在反向代理或客户端本身中,您应该尝试增加它们。如果文件从未到达 Artifactory,您应该转到远程存储库设置(UI -> 管理 -> 存储库 -> 远程 -> [存储库名称] -> 高级)并将套接字超时 (MS) 增加到当前值的两倍或三倍,足以获取最大的文件,但不能太大,因为它可能会导致建立过多与不良服务器的连接。

关于java - 从 Artifactory 远程存储库下载大型 Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53731428/

相关文章:

java - Hibernate 查询中的异常 - java.lang.IllegalArgumentException

java - 使用 Jenkins 构建 Maven 项目

android - 如何在 git 提交历史记录中删除敏感数据(API_KEY)?

android - 如何在 build.gradle 中指定 admob 库?

gradle - gradle,gretty-如何在服务器场任务中运行任务?

java - 使用基于多个分隔符和不同空行长度的分割

javascript - 制作 Spring 形式:select searchable by two parameters

java - Json 解析作为逻辑练习

java - JaCoCo 缺少可执行文件问题

jsp - JSTL forEach 在 JSP 中不起作用