我有一个自定义的CI运行器来构建我们的Gradle项目。我们面临的问题是Gradle守护进程很快就会停止,因此每个作业都需要很长时间,因为启动了gradle守护进程:
启动Gradle守护进程时,无法重用3个繁忙和32个停止的守护进程,请使用--status了解详细信息
有没有办法让一些守护进程保持新鲜和就绪?让20个守护进程始终处于就绪状态?
根据官方文件,我引用:
Gradle守护进程:一个长期的后台进程,它比其他情况下更快地执行构建。我们通过避免昂贵的引导过程以及利用缓存来实现这一点,将项目的数据保存在内存中。使用守护进程运行Gradle构建与不使用守护进程没有什么不同。只需配置您是否要使用它,其他一切都由Gradle透明处理。
这意味着如果你看到这个
启动Gradle守护进程时,无法重用3个繁忙和32个停止的守护进程,请使用--status了解详细信息。
32停止的守护进程仍然存在于以前的版本中,可能有很多原因。我们在stackoverflow中已经有了这个和这个。
但关于您的问题,我想您的CI runner只是在临时docker容器中,每次docker容器处理时,内存中的所有数据也将被处理。那么为什么需要使用gradle守护进程呢?
最好的解决方案是禁用gradle deamon。把这行org.gradle.daemon=false
放在项目的gradle.properties
中,如果它没有创建,它必须是项目的根。
这句话已经在这个,这个,这个里讨论过了
维基百科中守护进程的解释 守护进程是一个运行后台进程, 非交互式用户直接控制的在计算机程序 Gradle 守护进程是一个后台进程, 它运行着繁重的构建, 然后在构建等待下一次构建的之间保持自身存在. 这使得数据和代码在下一次构建前已经准备好,并存入内存中. 这显著的提高了后续构建的性能. 启用Gradle守护进程是一种节约构建时间的廉价方式. 强烈建议在所有开发机器上启用Gradle的守护进程.但
建议在开发环境中使用Gradle的守护进程,不建议在持续集成环境和构建服务器环境中使用守护进程. 守护进程可以更快的构建,这对于一个正坐在椅子前构建项目的人来说非常重要.对于CI构建来说,稳定性和可预见性是最重要的.为每个构建运行时用一个新的,完全孤立于以前的版本的程序,更加可靠。
我正在尝试运行react本机项目,但我看到一个错误,上面写着“启动一个Gradle守护进程,14个繁忙,1个不兼容,2个停止的守护进程无法重用,请使用--status了解详细信息”,之后终端保持空闲。 您好,我已经按照官方反应原生文档中概述的步骤开始了一个新的反应原生项目。一切都很完美,直到我在模拟器打开的情况下运行react-原生run-android命令。我得到了以下错误: “启动Gradle
首先,我在删除后下载了lquidbounce的源代码。gradle和我发布了代码信息,希望你们能帮我
19.1. Enter the daemon 走进守护进程 Gradle 守护进程(有时也称为构建守护进程) 的目的是改善 Gradle 的启动和执行时间。 我们准备了几个守护进程非常有用的用例。对于一些工作流,用户会多次调用 Gradle,以执行少量的相对快速的任务。举个例子: 当使用测试驱动开发时,单元测试会被执行多次。 当开发一个 web 应用程序中,应用程序会被组装多次。 当发现构建能做什