vac*_*ach 13 java protocol-buffers gradle
在一小部分sbt项目中,我们需要一个protobuf/grpc编译,因为只有gradle有正常的支持,我们用它来执行与protobuf相关的任务.
有时它会随机地失败编译同样的东西并且会在重试时成功,我们确定它是因为增量的java编译.
我想禁用各种孵化功能和增量编辑,我希望这个东西是确定性的.
为此我试过
compileJava {
//enable compilation in a separate daemon process
options.fork = false
//enable incremental compilation
options.incremental = false
}
Run Code Online (Sandbox Code Playgroud)
但gralde仍会提供这样的输出(显然忽略了那些标志)
Parallel execution is an incubating feature.
Incremental java compilation is an incubating feature.
:deleteGeneratedSource
:clean
:extractIncludeProto
:extractProto UP-TO-DATE
:generateProto
:recompileProto
Run Code Online (Sandbox Code Playgroud)
那么我们如何禁用并行执行和增量java编译呢?
Gradle 中默认不启用并行构建。也就是说,为了明确禁用并行性,您可以添加
org.gradle.parallel=false
Run Code Online (Sandbox Code Playgroud)
到您项目的 gradle.properties 文件,或为启动构建的 gradle/gradlew 命令指定--no-parallel选项。
这里的重要说明是,对于某些版本的 Gradle,例如 4.6 和 4.7 以及其他版本,禁用并行执行不起作用。一种解决方法是指定数量非常有限的工作线程。默认情况下,最大工作线程数等于系统处理器的数量。
所以在项目的 gradle.properties 添加值
org.gradle.workers.max=1
Run Code Online (Sandbox Code Playgroud)
为了将并发工作线程的数量限制为 1,或者为启动构建的 gradle/gradlew 命令指定选项--max-workers=1。
在 Gradle 4.10 之前的版本中,默认情况下不启用增量构建。对于 4.10 之后的版本,您可以将以下内容添加到 build.gradle(最有可能添加到多模块项目中的顶级)以禁用增量 Java 编译:
tasks.withType(JavaCompile) {
options.incremental = false
}
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试添加
org.gradle.daemon=false
org.gradle.parallel=false
Run Code Online (Sandbox Code Playgroud)
到gradle.properties文件,它可以帮助您解决问题.
| 归档时间: |
|
| 查看次数: |
4622 次 |
| 最近记录: |