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