このエントリを読むと分かること
Gradle の task hoge << { ... }
は task hoge doLast { ... }
に置き換えましょう、ということが分かる。
ついでに本題も上記一文で終了したので以下はおまけ。
非推奨になった Task.leftShift(Closure)
久々に Gradle(4.2) を触ったらタスク定義で警告メッセージが。
task hoge << { // '<<' は Task.leftShift(Closure) のエイリアス
...
}
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0.
Please use Task.doLast(Action) instead.
-
Task.leftShift(Closure)
は非推奨になりました。 - Gradle 5.0 で削除予定です。
- 代わりに
Task.doLast(Action)
を使ってください。
Gradle 3.2 で非推奨になったらしい。
Gradle 3.2 のリリースノート から抜粋:
The last change we want to bring to your attention has been a long time coming and will affect a large number of builds: the shortcut syntax for declaring tasks (via <<) has now been deprecated.
The eagle-eyed among you will notice that the user guide examples have been updated to use doLast() and we strongly recommend that you follow suit. This feature will be removed in Gradle 5.0!
See the Deprecations section for more details.
Task.doLast(Action)
に置き換える
置き換え案としては下記のいずれかになると思う。
案1
恐らくこれが一番楽。
group
や deprecation
を設定してる場合はよくないかもしれない(未調査)。
task hoge doLast {
...
}
もしくは
task(hoge).doLast {
...
}
案2
タスクオブジェクトの作成と処理の定義を分ける。
既存タスクへの追加であればこれで。
task hoge
hoge.doLast {
...
}
案3
Gradle 公式で提示されてるのはこれ。
個人的にネストが深くなるのが嫌なので、前述の案で問題がない限りは使わないかも。
task hoge {
doLast {
...
}
}
ダメなパターン
最初にやったしょっぱいミス。
task hoge.doLast {
...
}
FAILURE: Build failed with an exception.
* Where:
Script 'build.gradle' line: XX
* What went wrong:
A problem occurred evaluating script.
> Could not get unknown property 'hoge' for root project 'HogeProject' of type org.gradle.api.Project.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 0s
未定義の hoge
に対して doLast()
を呼び出している形になるのでエラーとなる。