如何获取Gradle当前实际生效的max-workers参数值?
解决方案
直接读取gradle.startParameter.maxWorkerCount即可拿到最终生效的最大worker数,这个值是Gradle启动阶段合并所有配置来源、计算默认值后得到的最终结果,覆盖所有配置场景:
- 命令行传入
--max-workers参数指定的值 gradle.properties中org.gradle.workers.max配置项指定的值- 用户未做任何自定义配置时,Gradle按当前机器CPU核心数自动计算的默认值
你之前直接读取org.gradle.workers.max属性拿不到值,是因为这个属性只有用户显式在配置文件/系统参数中声明时才会存在,Gradle自动计算的默认值、命令行传入的参数值不会回写到这个属性里,自然读不到全场景的正确结果。
配置示例
Groovy DSL(build.gradle)
task runMultiThreadProcess(type: Exec) { // 获取实际生效的最大worker数 def threadCount = gradle.startParameter.maxWorkerCount // 按你启动的进程的参数要求传递即可,示例为进程接收--thread-count参数指定线程数 commandLine "your-app-command", "--thread-count", threadCount.toString() // 补充你需要的其他Exec配置,比如工作目录、输入输出声明等 }
Kotlin DSL(build.gradle.kts)
tasks.register<Exec>("runMultiThreadProcess") { val threadCount = gradle.startParameter.maxWorkerCount commandLine("your-app-command", "--thread-count", threadCount.toString()) }
注意:不需要手动解析各个配置源的优先级,
startParameter中的值已经是Gradle按照官方优先级规则合并后的最终结果,所有Gradle 1.0+版本都支持该API,不存在版本兼容问题。
内容的提问来源于stack exchange,提问作者DBear
相关产品推荐
相关产品推荐

