【问题标题】:Gradle disable all incremental compilation and parallel buildsGradle 禁用所有增量编译和并行构建
【发布时间】:2019-10-19 05:56:43
【问题描述】:

在一小部分 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 和 sbt,两者都让生活变得更加复杂...... maven 摇滚它而不会给你太多麻烦,是的,它需要更长的时间来构建,但 intellij 不依赖 maven 或 sbt 或gradle 自行完成增量快速编译...因此其他构建工具的好处是值得怀疑的...在开发时您不需要使用 mvn 进行编译...对于复杂的脚本,我们几乎没有 kotlin 函数可以完成所有这些工作花哨的构建工具应该用更少的精力和更大的灵活性来做......
  • @robin-green:既然你已经开始在这个问题上悬赏,你能否详细说明什么是你可以接受的答案? TBH,我发现原来的问题相当模糊;我什至不知道当前接受的答案如何在某个时候回答这个问题……也许是因为我自己并没有面临这样的不确定性;你能提供一个 minimal reproducible example 来展示偶尔的不确定性吗?
  • 我的用例与 OP 的用例不同,但我仍然想禁用 gradle 运行中的所有并行性——最好是所有分叉进程——或者如果不是,那么所有同时运行的分叉进程正在运行 JUnit 测试。

标签: java gradle protocol-buffers


【解决方案1】:

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

org.gradle.parallel=false

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


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

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

org.gradle.workers.max=1

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


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

tasks.withType(JavaCompile) {
    options.incremental = false
}

【讨论】:

    【解决方案2】:

    尝试添加

    org.gradle.daemon=false
    org.gradle.parallel=false
    

    gradle.properties 文件,它可以帮助您解决问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 2021-11-22
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多