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

时间:2017-07-11 17:10:04

标签: gradle multi-project project-properties

我有一个可以识别多项目的设置插件。它目前适用于<div class="col-sm-3"> <label for="item1" style="color:black;">item1</label> <div class="input-select"> <select name="item1" id="item1"> <option value="1" data-item1="1">1</option> <option value="2" data-item1="2">2</option> <option value="3" data-item1="3">3</option> </select> </div> </div> <div class="col-sm-3"> <label for="item2" style="color:black;">item2</label> <div class="input-select"> <select name="item2" id="item2"> <option value="1" data-item2="1">1</option> <option value="2" data-item2="2">2</option> <option value="3" data-item2="3">3</option> </select> </div> </div> 中确定的每个项目。但是,这是一个问题,因为每个子项目都没有相同的配置,我通过settings.gradle在命令行上设置的项目属性来控制一些插件行为。

问题是,如果项目没有使用该属性所需的配置,则会失败,而且我知道通过命令行将属性应用于特定子项目的方法。

有没有办法知道哪些项目实际上被包含在构建的一部分中,而不是迭代-P?例如,当我这样做时:

settings.gradle.allprojects

我想知道只调用 gradle :subproject-name:build :other-subproject-name:build -PsomeProperty subproject-name,以便我可以将设置插件仅应用于那些项目。

或者有没有办法去&#34;范围&#34;以某种方式将项目属性仅限于特定项目?

1 个答案:

答案 0 :(得分:0)

  

...有没有办法知道哪些项目实际上被包含在构建中?

这是一种误解。当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
    }
}