如何在我的多项目 gradle 构建中排除某些子项目。 我想通过查询子项目的属性来排除应用插件调用。
我的父项目的build.gradle是这样的:
subprojects {
if (!ext.has('excludeProject')) {
apply plugin: 'org.example.DemoPlugin'
}
}
一些子项目的build.gradle包含这个:
ext {
excludeProject = true
}
这行不通。始终应用该插件。我也尝试了不同的语法,比如 if(!project.ext.exclude) 或 if(!project.hasProperty('exclude')).
有效的是:如果我在子项目中放置一个“gradle.properties”并在那里定义属性(excludeProject=true),那么它就有效。
如果我查询 "if(project.name != "subproject") 也有效,但我不想要那个解决方案。 有没有办法通过在 build.gradle 中使用扩展属性来让它工作?
将
excludeProject
放在 buildscript { ext { ... } }
中似乎应用该属性为时已晚,以至于 subprojects { ... }
无法检测到它们。
您可以在您的
subprojects { ... }
中放置这样一行以显示当时可用的属性:
println(ppp.ext.getProperties().keySet())
如果您这样做,该项目还没有得到足够的评估,无法填充这些项目。但是,如果您将
excludeProject = true
放入子模块中的 gradle.properties
中,它会通过我尝试的方法(Gradle 8.0.1)检测到它。