4
我想创建一个简单的同步任务,根据构建类型(例如debug/release)稍微改变它的行为,我使用布尔变量'dummy'decrared在gradle.taskGraph.whenReady:移动内置gradle任务工作做最后/内置任务shourtcuts
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()看起来相当丑)
1)似乎gradle这个DAG是完全无用的,甚至不适合配置像sync这样的内置任务:a)仅当配置阶段和同步执行期间调用whenReady时b)这使得不可能的多内部配置像debug + release一样不可能。我将发布单独的问题重新编译为gradle-user ML 2)这不起作用 - 任务在配置阶段执行,doFirst在“运行”阶段执行 – thevery 2011-01-15 12:47:22