Gradle7通过命令行-P参数禁用并行编译不生效怎么办
问题根因
-P参数的作用是设置项目属性(Project Property),这类参数只会注入到项目属性集合中,供构建脚本、自定义插件读取调用,不会被Gradle核心框架识别为内置构建配置项。org.gradle.parallel是Gradle核心控制并行执行的内置环境属性,这类org.gradle.前缀的核心配置本身就不支持通过-P参数覆盖,你传入的-Porg.gradle.parallel=false只会被当成一个普通的自定义项目属性存下来,并行开关的配置读取逻辑根本不会读这个值,自然不会生效。
正确的命令行禁用方式
两种方式都可以在命令行覆盖配置文件中的并行设置,优先级高于gradle.properties里的配置:
- 方式1:使用官方提供的专用开关参数(最推荐,语义最清晰)
直接在命令中加--no-parallel参数即可:./gradlew test --no-parallel - 方式2:通过JVM系统属性传参(和配置文件中的key完全对应)
核心配置属性需要用-D(JVM系统属性参数)传入,而不是-P:./gradlew test -Dorg.gradle.parallel=false
补充说明:Gradle核心配置的读取优先级为:命令行专用参数(如
--no-parallel)> 命令行传入的-D系统属性 > 各层级gradle.properties中的配置 > 默认值,-P传入的同名属性不在这个读取链路中,对核心开关配置完全无效。
内容的提问来源于stack exchange,提问作者tribbloid
相关产品推荐
相关产品推荐

