排除Gradle多项目构建中某些子项目的插件应用

wtlkbnrh  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(236)

如何在我的多项目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中的扩展属性来使它工作?

798qvoo8

798qvoo81#

excludeProject放在buildscript { ext { ... } }中似乎应用该属性太晚,subprojects { ... }无法检测到它们。
您可以在subprojects { ... }中放置一行这样的代码来显示当时可用的属性:
println(ppp.ext.getProperties().keySet())
如果您这样做,项目的评估结果还不足以填充这些内容。但是,如果您将excludeProject = true放入子模块的gradle.properties中,它会通过我尝试的方法(Gradle 8.0.1)检测到它。

相关问题