【发布时间】:2020-11-07 05:16:44
【问题描述】:
我有多个具有外部依赖项的 Jenkins Java 项目。我希望 Jenkins 避免在每次构建时重新下载每个 Maven 项目的外部依赖项(.repository 的内容)。目前,每个项目都使用一个私有 repo,并在每次构建时擦除它的工作区。
这是我想到的解决方案。但是,我对 Jenkins 和 Java 不是很熟悉,所以我处于学习曲线上。
- 不要为每个项目使用私有 Maven 存储库。为每个项目使用默认的
/home/jenkins/.m2/.repository目录。可以在每个后续构建中使用外部依赖项。 - 找到一些工具来缓存外部依赖项(这是使用人工制品或联结吗?),因此在每次构建时下载它们并不那么昂贵。
- 不要在每次构建开始时擦除整个项目工作区。有选择地删除文件并保留工作区的 .repository 目录,以便可以在每次构建时利用该目录。
如何避免每次都重新下载依赖项?有处理上述情况的标准方法吗?最终,我想减少构建时间。下载包需要很长时间,导致构建有时需要 45 分钟或更长时间。
非常感谢您的帮助。
【问题讨论】:
-
"这就是人工制品或联结的用途吗?"除其他外,它们可用于此目的。
-
第一个问题:45分钟究竟是什么?包括测试/下载等在内的完整构建需要更多信息:您正在运行多少个模块、多少个类以及多少个测试?除了那 45 分钟听起来真的很奇怪......?您是否使用快速机器(带有 SSD 存储;足够的 RAM/CPU?)?并分析究竟需要什么时间?下载?真的使用内部网络吗?如果没有在您的网络等中安装存储库管理器?
-
感谢您的回答。下载依赖项大约需要 40 分钟,而构建总共需要 45 分钟。我们支持公司代理。 RAM 和 CPU 都不是瓶颈。我认为我的问题的最初意图是找到一种方法来防止从 Maven 中心重新下载依赖项。