【Gradle】Gradle ~基本編 / Task ~

  ■ はじめに

https://blogs.yahoo.co.jp/dk521123/35915819.html
の続き。

以下「公式サイト(翻訳)より」から、Gradle を使うには、タクスが重要そうなので、
今回は、タスク(task) について、調べてみた。

  公式サイト(翻訳)より

http://gradle.monochromeroad.com/docs/userguide/tutorial_using_tasks.html
Gradleの根本にあるのは、プロジェクトとタスクという二つの基本的な概念です。

・・・略・・・

それぞれのプロジェクトは、一つ以上のタスクから構成されます。
タスクとは、分割不能な何らかの作業単位を表す概念です。

 

  ■ 構文

  【1】基本形

task 【タスク名】 {
  // 実行処理
}
補足1:説明文
task 【タスク名】 {
  description = '【説明文】'
  ... 略 ...
補足2:タクスの有効/無効
// 無効にする
【タスク名】.enabled = false

  【2】doFirst/doLast

task 【タスク名】 {
  // 最初に実行
  doFirst {
    // 実行処理
  }
  // 最後に実行
  doLast {
    // 実行処理
  }
}
doLast の別の書き方
task << 【タスク名】 {
  // 実行処理
}
http://gradle.monochromeroad.com/docs/userguide/tutorial_using_tasks.html
より抜粋

<<はdoLastの単なるエイリアスです
補足:<< なし と あり の違い
 * << なし : タスクのインスタンス生成時に呼び出される
 * << あり : タスクの実行時に呼び出される
http://d.hatena.ne.jp/bluepapa32/20110208/1297178119

  【3】依存するタスクを指定

単一
task 【タスク名】 (dependsOn:'【依存するタスク名】') {
  // 実行処理
}
複数
task 【タスク名】 (dependsOn:['【依存するタスク名1】', '【依存するタスク名2】', ...]) {
  // 実行処理
}
補足:グループ化
task 【タスク名】 (dependsOn:'【依存するタスク名】') {
  group = '【グループ名】'
  ... 略 ...

 

  ■ サンプル

  【2】doFirst/doLast

task helloWorld {
    println 'helloWorld1'
    
    doFirst {
        println 'doFirst'
    }
    doLast {
        println 'doLast'
    }
    
    println 'helloWorld2'
}
出力結果
helloWorld1
helloWorld2
:helloWorld
doFirst
doLast

  【3】依存するタスクを指定

task helloWorld(dependsOn:['hello', 'world']) {
    description = 'main task - helloWorld'
    group = 'Group for Hello World'
    doLast {
        println 'Hello World'
    }
}
task hello {
    description = 'sub task - hello'
    group = 'Group for Hello World'
    doLast {
        println 'hello'
    }
}
task world {
    description = 'sub task - world'
    group = 'Group for Hello World'
    doLast {
        println 'world'
    }
}
出力結果
:hello
hello
:world
world
:helloWorld
Hello World

 

 

  関連記事

  Gradle ~入門編~

https://blogs.yahoo.co.jp/dk521123/35915819.html

  Gradle ~あれこれ編~

https://blogs.yahoo.co.jp/dk521123/37508898.html