ビルドの種類(debug/releaseなど)によって動作が少し変更されるシンプルな同期タスクを作成したいと思います。ブール変数 'dummy' 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()
}
}
は(それも可能
- doLast に/セットアップwhenReady
- 移動同期タスクの作業を除き、他のいくつかの場所でいくつかのビルドプロパティを検出
- または少なくともには、同期タスクのためのいくつかのショートカットを持っているです.execute()はかなり醜いです)
1すべきではない:私は、これは動作するはずだと思う);しかし、あなたは常にdoFirstにあなたの行動を追加することができますDAGはsyncのようなbuit-inタスクを設定するのに全く役に立たず、悪いです。a)whenReadyは設定フェーズの後にのみ呼び出され、syncはその間に実行されます。b)これにより、debug + releaseのようなマルチビルド設定は不可能になります。私はgradle-userにこれを追い払う別の質問を投稿します。ML 2)これは動作しません - タスクは設定フェーズで実行され、doFirstは '実行'フェーズで実行されます – thevery