如何在我的多项目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中的扩展属性来使它工作?
1条答案
按热度按时间798qvoo81#
将
excludeProject
放在buildscript { ext { ... } }
中似乎应用该属性太晚,subprojects { ... }
无法检测到它们。您可以在
subprojects { ... }
中放置一行这样的代码来显示当时可用的属性:println(ppp.ext.getProperties().keySet())
如果您这样做,项目的评估结果还不足以填充这些内容。但是,如果您将
excludeProject = true
放入子模块的gradle.properties
中,它会通过我尝试的方法(Gradle 8.0.1)检测到它。