Gradle 禁用所有增量编译和并行构建

2024-01-27

在一小部分 sbt 项目中,我们需要 protobuf/grpc 编译,并且因为只有 Gradle 对此有正常支持,所以我们用它来执行 protobuf 相关任务。

有时它会随机失败编译相同的东西,但重试时会成功,我们确定这是因为增量 Java 编译。

我想禁用各种孵化功能和增量编译,我希望这件事是确定性的。

为此我尝试过

compileJava {
    //enable compilation in a separate daemon process
    options.fork = false

    //enable incremental compilation
    options.incremental = false
}

但 Gradle 仍然会给出这样的输出(显然忽略了这些标志)

Parallel execution is an incubating feature.
Incremental java compilation is an incubating feature.
:deleteGeneratedSource
:clean
:extractIncludeProto
:extractProto UP-TO-DATE
:generateProto
:recompileProto

那么我们如何禁用并行执行和增量Java编译呢?


Gradle 中默认未启用并行构建。也就是说,为了明确禁用并行性,您可以添加

org.gradle.parallel=false

到您项目的 gradle.properties 文件或指定--无并行启动构建的 gradle/gradlew 命令的选项。


重要提示在这里问题是,对于 Gradle 的某些版本(例如 4.6 和 4.7 等),禁用并行执行不起作用。解决方法是指定非常有限数量的工作线程。默认情况下,最大工作线程数等于系统处理器的数量。

所以在项目的gradle.properties中添加值

org.gradle.workers.max=1

为了将并发工作线程的数量限制为 1 或指定选项--最大工人=1到启动构建的 gradle/gradlew 命令。


Gradle 4.10之前的版本默认不启用增量构建。对于 4.10 之后的版本,您可以将以下内容添加到 build.gradle(最有可能添加到多模块项目中的顶层),以禁用增量 Java 编译:

tasks.withType(JavaCompile) {
    options.incremental = false
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 禁用所有增量编译和并行构建 的相关文章

随机推荐

  • 修改函数参数

    很抱歉 如果这是一个愚蠢的问题 但我已经寻找了一段时间并没有真正找到答案 如果我正在编写一个 python 函数 例如 def function in1 in2 in1 in1 1 in2 in2 1 我该如何坚持这些改变 我知道他们为什么
  • 如何映射嵌套的复杂JSON对象并将它们保存到核心数据?

    我在将复杂的嵌套 JSON 数据映射和保存到核心数据对象时遇到问题 它用于在离线模式和缓存的情况下读取数据 JSON也有代码 它代表代码列表中对象的id JSON 中对象的嵌套深度可以在 5 8 个对象之间 此类 简化的 JSON 的示例如
  • 在 iOS 上缩小图像最节省内存的方法是什么?

    在后台线程中 我的应用程序需要从磁盘读取图像 将其缩小到屏幕大小 1024x768 或 2048x1536 并将其保存回磁盘 原始图像大部分来自相机胶卷 但其中一些可能具有更大的尺寸 例如 3000x3000 随后 在不同的线程中 这些图像
  • PassportJs 身份验证无限循环和执行(默认)查询

    我正在尝试使用 PassportJs 和 Sequelize 构建身份验证系统 我自己制作了注册系统 使用Sequelize 我只想使用 PassportJS 进行登录 它不会将我重定向到 failureRedirect 路由 也不会重定向
  • 从服务器动态添加数据以自动完成 Textview

    我想在我的android应用程序中实现google类型搜索 为此我使用了自动完成文本视图 当我一个接一个地输入字符时它非常有效 但是当我同时输入多个字符时会出现问题 我的应用程序显示一个对话框并强制关闭 提前致谢 public class
  • 位置 0 出现意外标记文件结束

    RequestMapping value sensorlog method RequestMethod POST public ResponseBody String sensorlog HttpServletRequest request
  • 如何创建一个大小有限的VecDeque?

    我想实施一个VecDeque有最大尺寸限制 我有两个策略 但我都无法完成 第一种方法 通过组合继承 我创建了一个新结构 pub struct LimVecDeque
  • 通过 TCP 发送和接收 XML 数据

    我一直在尝试弄清楚如何通过 TCP 服务器发送和接收 XML 数据 我有java编程背景 所以我在这里有点超出我的深度 如果我只发送纯文本 我的程序就可以工作 但是一旦我尝试发送 xml 数据 它就会挂起 服务器永远不会收到消息 我一直在寻
  • 如何使我的请求在后台运行,同时填充其他 EditText(线程)?

    我是线程新手 但我有一个 EditText 视图 每当失去焦点时 它都会使用用户从 EditText 的输入填充带有图像徽标的 RecyclerView 但是 每当用户失去焦点并且调用该方法时 一切都会停止一段时间 这意味着我不擅长线程 我
  • 将 stdout 和 stderr 重定向到文件和控制台

    在 powershell 脚本中 我调用一个程序并想要重定向stdout and stderr to 不同的文件 同时仍然在控制台中显示两者的输出 所以基本上 我想要 stdout gt stdout stdout gt out log s
  • 无法在 Eclipse + EPIC 中查看本地文件

    我刚刚安装了 Eclipse 3 7 的 Perl EPIC 插件 调试器本身工作正常 我可以单步执行我的代码 但是我看不到任何变量 Eclipse 在错误日志中报告此错误 解析调试器变量时发生错误 的内容 变量视图可能不准确 字符串导致的
  • 录制的声音文件(ala google now,google keep)-RecognizerIntent/Listener

    我一直在开发一个使用 recognizerIntent 来获取语音输入的应用程序 然而 自从 jelly bean 推出以来 我一直无法从我的语音输入中获取实际的声音文件 在识别监听器中 http developer android com
  • 您不能对同一个动态路径 Nextjs 使用不同的 slug 名称

    我在我的项目中使用基于文件夹结构的 nextjs 默认动态路由技术 我有一条路线是 pages language location location id 现在我遇到一个用例 除了最后一个参数之外 我需要与上面的路由完全相同 locatio
  • C#:从正文和文件中将模型发布为 MultipartFormDataContent

    我正在寻找一种在一个请求中发送模型和图像的方法 我尝试从正文发送我的模型 但我不知道如何发送文件 除了在不同的文件中发送图像和模型之外 还有其他方法吗 这是我的 API 中的 POST 方法 HttpPost Route UploadNew
  • 如何使用 Python 从 Firebase 存储中检索图像?

    我已经将图像存储到 Firebase Storage 我需要使用 Python 代码将其取出 我可以使用任何 URL 检索图像吗 或者有什么办法可以找回来吗 以下是我如何将其存储在 Firebase Storage 中的图像 这就是我用的
  • 使用 Vaadin 从菜单栏打开 pdf 文件

    我的 vaadin 应用程序中有一个菜单栏 并且想要添加一个项目来打开 pdf 文件 这是浏览器的新选项卡 我找到了一些使用按钮打开文件的解决方案 但我必须使用 MenuItem MenuBar Command commandHandler
  • 如何从 ASP.NET 5 MVC 6 控制器操作返回 XML

    如何从控制器操作返回 XML 即使我添加标题Accept application xml它返回一个 JSON 对象 MVC 5 中的 WebApi 控制器支持这一点 我需要做什么才能使其在 MVC 6 中工作 Microsoft 删除了 X
  • 在 iPad 中重新定向期间在视图中定位对象

    iPad 专家 苹果希望我们支持所有方向 我认为这意味着特定的布局应该旋转 以便所有对象的位置相对相同 或者 如果看起来不太好 那么它们应该重新定位 或者应该设计和构建两个视图 如果我依赖内置的旋转机制 对象要么会调整大小 要么以一个方向或
  • 如何在 extjs 网格(单元格编辑)中显示完整列可编辑?

    我正在使用单元格编辑插件来编辑单元格 但这就像当我们单击该列时 它将进入编辑模式 我想显示带有可编辑文本框的完整列 目前我正在使用以下代码使其可编辑 selType cellmodel plugins Ext create Ext grid
  • Gradle 禁用所有增量编译和并行构建

    在一小部分 sbt 项目中 我们需要 protobuf grpc 编译 并且因为只有 Gradle 对此有正常支持 所以我们用它来执行 protobuf 相关任务 有时它会随机失败编译相同的东西 但重试时会成功 我们确定这是因为增量 Jav