gradle - 识别已在gradle中调用的项目列表

标签 gradle multi-project project-properties

我有一个支持多项目的设置插件。当前,它将自身应用于settings.gradle中标识的每个项目。但是,这是一个问题,因为每个子项目都没有相同的配置,并且我通过-P通过在命令行上设置的项目属性来控制某些插件行为。

问题是,在没有使用该属性所需的配置的项目上,此操作将失败,并且我知道通过命令行将属性应用于特定子项目的已知方法。

除了遍历settings.gradle.allprojects之外,还没有办法知道哪些项目实际上已包含在构建中?例如,当我这样做时:
gradle :subproject-name:build :other-subproject-name:build -PsomeProperty
我想知道只调用了subproject-nameother-subproject-name,因此我可以将设置插件仅应用于那些项目。

还是有办法将项目属性“范围”化到仅特定项目?

最佳答案

... is there a way to know what projects have actually been included as part of the build?



这是一个误解。当settings.gradle包含所有项目时,所有项目都将成为构建的一部分,并且都将对其​​进行配置,以便它们具有关联的Project

您最终要寻找的是,给定将要执行的任务,拥有这些任务的子项目是什么?为此,您可以获取Gradle的任务图,并针对将要执行的所有任务,找到拥有每个任务的项目。
gradle.taskGraph.whenReady { graph ->
    def projects = graph.allTasks.collect { it.project }.toSet()
    projects.each {
        println "Project is being used in this build: " + it
    }
}

关于gradle - 识别已在gradle中调用的项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040775/

相关文章:

android - gradle uploadArchives 任务上传单一口味

java - 如何用buck创建多项目?

Gradle multiproject 在项目上给出 "Could not find property ' sourceSets' 错误

c++ - 多个项目输出类型: compiling as an EXE and a LIB

c++ - 有关保护 DLL 代码的任何提示?

visual-studio-2008 - Visual Studio 是否支持将生成输出定向到多个目录?

java - 为什么 gradle 不会覆盖不同 Android 风格的 Java 类?

Gradle 构建打印无关的输出

groovy - 许可证-gradle-plugin

gradle - Gradle禁用特定任务的自动子项目执行