14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gradle の Task.leftShift() を Task.doLast() に置き換える

Last updated at Posted at 2017-12-14

このエントリを読むと分かること

Gradle の task hoge << { ... }task hoge doLast { ... } に置き換えましょう、ということが分かる。
ついでに本題も上記一文で終了したので以下はおまけ。

非推奨になった Task.leftShift(Closure)

久々に Gradle(4.2) を触ったらタスク定義で警告メッセージが。

build.gradle
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

恐らくこれが一番楽。
groupdeprecation を設定してる場合はよくないかもしれない(未調査)。

build.gradle
task hoge doLast {
    ...
}

もしくは

build.gradle
task(hoge).doLast {
    ...
}

案2

タスクオブジェクトの作成と処理の定義を分ける。
既存タスクへの追加であればこれで。

build.gradle
task hoge
hoge.doLast {
    ...
}

案3

Gradle 公式で提示されてるのはこれ。
個人的にネストが深くなるのが嫌なので、前述の案で問題がない限りは使わないかも。

build.gradle
task hoge {
    doLast {
        ...
    }
}

ダメなパターン

最初にやったしょっぱいミス。

build.gradle
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() を呼び出している形になるのでエラーとなる。

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?