首页 > 解决方案 > 最小化 Docker 上 Gradle 项目的构建时间

问题描述

想象一下,我需要构建一个大型Cuba应用程序(它使用 Gradle 来管理依赖项并在构建中生成一个.war.

我需要对构建和应用程序进行 dockerize。后者在.war复制 Tomcat 映像中运行。

大多数依赖项实际上在项目的连续构建之间保持不变,但构建似乎每次都超过它们,就像永远......

我想从gradle:jdk8(有点)导入所有 Gradle 依赖项的自定义 Docker 映像。他的图像将用于连续构建以生成.wars,并且仅当依赖项的版本发生更改时才会重新构建。

虽然,我对 Gradle 很陌生,但我不知道:

有什么建议/建议吗?这可能吗?希望我的问题很清楚,但我很难解释我的目标。问我更好的解释。提前致谢。

标签: dockergradlecuba-platform

解决方案


你的意思是你想为构建运行器(或构建代理)构建一个 Docker 映像,对吧?

  1. 在不构建项目的情况下无法导入依赖项,因为 Gradle 会延迟解析依赖项,仅在需要时才解析。例如,构建 CUBA 主题的工件仅在构建 Web 主题时才被解析。

  2. 是的,可以重新使用以前下载的库工件(缓存在 ~/.gradle/caches 中)在更短的时间内构建项目。

因此,在您的情况下,您需要通过在 Docker 容器中完全构建您的项目来创建构建运行程序的 docker 映像。依赖项将被下载并缓存在文件系统中。然后您可以拉取该图像并再次将其用于后续构建,避免重新下载工件。

如果您在项目中更改 CUBA 平台版本,如果您想避免每次构建都下载 cuba-*.jar 工件,则需要重新创建构建运行器镜像。


推荐阅读