java - 使用 OSS 软件镜像 Maven 存储库(尝试使用 Artifactory OSS)
问题描述
现状概览:
- 我有一个托管在不同位置的公司 Maven 存储库
- 与所述存储库的互联网连接非常慢
- 我想在我的站点上托管一个缓存/镜像,以便我和我的团队可以更快地下载依赖项
- 我们有一个突出的依赖项,因为它的大小为 8GB,这意味着下载大约需要 40 分钟
所以我尝试使用 Artifactory OSS,但是:
- 官方的“存储库复制”功能被锁定在 >=3k$/年的付费墙后面。它基本上与以一种或另一种方式主动缓存的“远程存储库”相同。Sonatype Nexus OSS 的情况几乎相同。
- 我通常可以在 Artifactory 中使用普通的“远程存储库”,但它的行为很奇怪。
- 预期的功能是客户端从现场 Artifactory 远程存储库中请求一个指向非现场实际服务器的依赖项。如果未缓存,则现场服务器从场外服务器下载。然后由现场服务器提供给客户端
- 当请求大量依赖时,现场服务器开始下载,大约 30 秒后,客户端收到套接字超时并停止整个 gradle 构建
- 有一个名为“本地存储”的选项,当停用时会将请求转发到异地服务器并且根本不缓存
- 我想要的是现场服务器在请求依赖项时开始缓存,但响应此服务器上不存在依赖项(导致客户端查看场外服务器)或将请求转发到类似于禁用“本地存储”时的异地服务器
毕竟我不确定问题出在哪里。我是否必须以不同的方式配置 Artifactory 或 Gradle?还有什么我可以用来创建镜子的吗?一个完全可以接受的解决方案是每晚运行一个复制脚本,但我更喜欢使用 Artifactory OSS 来解决它。
解决方案
我相对确定,Artifactory 或 Nexus 都无法实现您想要的。
你的要求很不寻常。我会考虑一个 20MB“大”的依赖项,我从未见过超过 100MB 的依赖项。你的 8GB 东西不是罐子,对吧?Nexus/Artifactory 不适合这种东西。
首先,我会质疑 8GB 的东西。它是什么?为什么这么大?
如果你不能改变它,我会mvn dependency:get
定期在构建服务器上运行一个或类似的东西。这样,您的现场 Artifactory/Nexus 将(通常)具有相关版本,并且您的构建不会超时。
推荐阅读
- python - 从 shell 脚本向 python 传递参数
- google-sheets - 将 Google 表格查询结果从一行拆分为两行
- python - 如何使用 Python 从字符串中删除插入符号(^@)?
- python - 我该如何处理“只能将str(不是“StringVar”)连接到str”
- javascript - 使用 transition.end() 承诺链接转换
- sql - 在第二列中存储日期加上 45 天
- python - Pandas strip 函数也会删除数值
- java - 管理员和用户的访问权限
- java - 为什么创建一个新的 int 数组的结果等于 5?
- vb.net - 如果行在datagridview中有值,则在下一行插入数据