优化Gradle包装器的安装尺寸

时间:2020-07-16 17:33:41

标签: gradlew

我们正在开发一个使用云运行器的系统,其中我们拥有诸如Spring + Gradle再加上Mongo之类的技术。

系统已容器化,并在gcp的云运行中运行。但是,到目前为止,gcp对容器大小有2gb的硬限制,我们正在尝试将其限制为该大小。

在更深入的调查中,我发现,我们使用的gradle包装器下载的数据至少比我们需要的下载量多170mb。

它包括以下内容-

  1. 它包含文档,通过包装运行构建时不需要。
  2. 解压缩后不会删除zip文件。

总共需要270 mb,对我们来说这是很大的。.我想知道的是,是否有任何包装器配置OOTM可以帮助我避免这些多余的文件下载到我们的系统中?

谢谢。

2 个答案:

答案 0 :(得分:1)

您似乎使用了 Gradle 分发类型“all”,其中包括源代码和 Gradle 文档(例如,用于 IDE 支持 -- source)。

由于您在云中运行 Gradle 包装器,因此您可能不需要 IDE 支持:使用分发类型“bin”。至少在最新版本的 Gradle(版本 7)中,这是默认设置,但您仍然可以明确地确保:

# gradle wrapper --gradle-version 7.0.2 --distribution-type bin

大小差异约为 200 MB:

# du -hs ~/.gradle/wrapper/dists/gradle-7.0.2-{all,bin}                      
438M    ~/.gradle/wrapper/dists/gradle-7.0.2-all
229M    ~/.gradle/wrapper/dists/gradle-7.0.2-bin

Gradle 仍然保留 zip 文件,因此您必须手动删除它。

答案 1 :(得分:0)

对我们来说,这就是我们的目标。

  1. 虽然我们使用了 gradle 包装器,但我们也确保我们预先在机器上安装了相关的 gradle 包装器,这样当我们运行 gradlew 命令时,我们就不会再次下载它。
  2. 当您在构建镜像时下载 gradle 包装器时,您可以在构建容器镜像时自由地从文件系统中删除该文件。这样您就可以释放一些空间。
  3. 下一步是您可以压缩图像以删除所有不必要的图层。 How can i remove layers from my docker image?
相关问题