エキサイト株式会社メディア事業部エンジニアの佐々木です。Gradleでタスクを順番に実行する書き方をメモしておきます。
はじめに
環境は下記になります。
------------------------------------------------------------ Gradle 7.3.3 ------------------------------------------------------------ Build time: 2021-12-22 12:37:54 UTC Revision: 6f556c80f945dc54b50e0be633da6c62dbe8dc71 Kotlin: 1.5.31 Groovy: 3.0.9 Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021 JVM: 17.0.1 (Amazon.com Inc. 17.0.1+12-LTS) OS: Mac OS X 11.5.2 x86_64
Gradleタスクを順番に実行する
Gradleは、拡張等も簡単にできる結構便利なビルドツールなのですが、中身は結構複雑なビルドツールです。タスクを順番に実行したいとしても、通常のプログラミングのように上から順番に書いても実行してくれません。
順番が保証されない書き方
task内で他のタスクをまとめて実行する方法は、dependsOn 'タスク名'
の記法がありますが、これは実行順序を保証してくれませんので、注意が必要です。
task sample1 { doLast { println 'sample1' } } task sample2 { doLast { println 'sample2' } } task sample3 { doLast { println 'sample3' } } task sampleAll { dependsOn sample3 dependsOn sample2 dependsOn sample1 } 実行結果: > Task sample1 sample1 > Task sample2 sample2 > Task sample3 sample3
記述どおりの順番では実行してくれませんでした。
実行順が保証される書き方
実行順序を保証するのに、 tasks.task名.mustAfterRun task名
の記法を使う必要があります。
task sampleAll { dependsOn sample3 dependsOn sample2 dependsOn sample1 tasks.sample1.mustRunAfter sample2 tasks.sample2.mustRunAfter sample3 } 実行結果 > sample3 sample3 > sample2 sample2 > sample1 sample1
指定した順番どおり実行されました。
まとめ
Gradleは便利なんですが、実行順とかがややこしい感じです。
最後に
エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。募集にはありませんが、長期インターンも歓迎していますので、興味があれば連絡いただければと思います。
カジュアル面談はこちらになります! meety.net
募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com