在gradle多项目构建中排除插件申请某些子项目

问题描述 投票:0回答:1

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

gradle properties gradle-plugin multi-project subproject
1个回答
0
投票

excludeProject
放在
buildscript { ext { ... } }
中似乎应用该属性为时已晚,以至于
subprojects { ... }
无法检测到它们。

您可以在您的

subprojects { ... }
中放置这样一行以显示当时可用的属性:

println(ppp.ext.getProperties().keySet())

如果您这样做,该项目还没有得到足够的评估,无法填充这些项目。但是,如果您将

excludeProject = true
放入子模块中的
gradle.properties
中,它会通过我尝试的方法(Gradle 8.0.1)检测到它。

© www.soinside.com 2019 - 2024. All rights reserved.