我想创建一个简单的同步任务,根据构建类型(例如调试/发布)稍微改变它的行为,我使用在 gradle.taskGraph.whenReady 中声明的布尔变量“dummy”:
gradle.taskGraph.whenReady {taskGraph ->
dummy = false
if (taskGraph.hasTask(':dummybuild')) {
dummy = true
}
}
问题是通过以下方式配置的任务具有配置范围,即在 whenReady 之前,因此它无权访问“虚拟”变量:
task copySkins(type: Sync) {
from skinsFrom
into skinsInto
rename skinsRename
exclude symbianExclude
if (!dummy) exclude dummyExclude
}
现在我正在使用这个解决方法
task copySkins {
inputs.dir skinsFrom
outputs.dir skinsInto
doLast {
task skins(type: Sync) {
from skinsFrom
into skinsInto
rename skinsRename
exclude symbianExclude
if (!dummy) exclude dummyExclude
}
skins.execute()
}
}
是否有可能
- 在除 whenReady 之外的其他地方检测/设置一些构建属性
- 将同步任务工作移至 doLast
- 或者至少有一些同步任务的快捷方式(.execute() 看起来很丑)