我有一个可以识别多项目的设置插件。它目前适用于<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;以某种方式将项目属性仅限于特定项目?
答案 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
}
}