gpt4 book ai didi

android - 如何在Docker镜像中填充Gradle缓存?

转载 作者:行者123 更新时间:2023-12-02 20:02:35 25 4
gpt4 key购买 nike

我正在尝试构建用于开发Android应用程序的Docker镜像。我有一个安装JDK,Android SDK + NDK的镜像。

当我运行图像并运行gradle包装器(gradlew)时,包装器会下载最新的Gradle,然后下载应用程序的所有依赖项,因此我看到如下消息:

Download https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.4/gradle-3.1.4.pom
Download https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.1.4/builder-3.1.4.pom
...
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom
Download https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom
...
Download https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.4/gradle-3.1.4.jar
Download https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.1.4/gradle-core-3.1.4.jar

等等。

由于Docker容器的性质,每次我运行一个新容器时,它都必须再次下载所有这些依赖项,就像这是第一次一样。 (我可以重复使用一个容器,但是我希望使用此图像的每个人都不必下载这些文件;由于其他原因,每次都使用一个新鲜的容器是可取的。)因此,我想让它们“烘烤”进入“Docker镜像”。最好的方法是什么?

一种想法是向Dockerfile添加指令以复制到我的项目的源代码中并进行构建(然后从镜像中删除项目文件)。但是,这似乎很棘手(我们应该忽略未被.git跟踪的文件)并且很浪费(为什么要真正进行整个构建;我只想下载这些文件并将其放在适当的位置)。

另一种选择是进行构建,从构建输出中获取所有这些URL,弄清楚它们应在磁盘上的位置(不确定如何做),然后在Dockerfile中添加指令以手动将它们复制到适当位置。但这似乎需要大量工作,并且在我的应用程序依赖项更改时需要手动更新。

似乎应该有一种方法可以在gradle包装器中复制并最小化gradle构建文件集,并要求它“仅恢复依赖关系”,但是我一直无法找到这样的目标。有没有办法做到这一点?

最佳答案

您可以使用Artifactory运行自己的Maven Artifact 本地缓存。

关于android - 如何在Docker镜像中填充Gradle缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52376829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com