提问人:shay__ 提问时间:11/13/2023 最后编辑:shay__ 更新时间:11/13/2023 访问量:30
用于容器化 CI 的 Maven 多个本地存储库
Maven multiple local repositories for containerized CI
问:
我们的 Java 应用程序有许多依赖项,在 CI 期间,大量时间花在下载工件上。由于几乎所有应用程序(Hadoop、Scala、Jackson 等,各种版本)都使用了许多依赖项,因此它们会在每个应用程序 CI 上一次又一次地下载。由于显而易见的原因,CI 过程被容器化,完成后,整个 .m2 文件夹将与容器一起处置。
一个想法是有 2 个本地存储库:
- 只读存储库,在共享挂载上,包含所有共享依赖项
- CI 容器上的可写一次性存储库,用于下载独占项目
但是我找不到任何以这种方式配置 Maven 的方法。可能吗?
编辑:问题是关于本地存储库的,所有工件都下载到其中,用于构建本身。
谢谢。
答:
2赞
J Fabian Meier
11/13/2023
#1
关键是:不应在构建后释放本地存储库。
本地存储库应位于装载到容器中的卷中。
评论
0赞
shay__
11/14/2023
我们有数百个不同的应用程序,具有不同的依赖和版本,您是否建议我们将所有依赖项都保留在磁盘上?此外,据我所知,Maven 在来自不同构建的并发下载方面并不出色(对吗?这不会有问题吗?
0赞
J Fabian Meier
11/14/2023
标准做法是在磁盘上为每个项目保留一个本地存储库。当然,这可能是数百GB,并且可能不得不不时地使用cron作业将其删除。是的,拥有数百个本地存储库,这些存储库在许多内容中重合,这并不是非常有效的。您可以尝试构建类似共享缓存的东西,您可以在容器的开头从中复制内容,但我还没有在实践中看到这一点。
1赞
shay__
11/14/2023
谢谢,感谢您的帮助。这是有道理的,我很确定它也适合我们的基础设施。请考虑将此详细说明添加到答案中。
评论