Hatena::ブログ(Diary)

leftovers... このページをアンテナに追加 RSSフィード

2008-09-15

Gradleインストール+少し遊んでみる

Gradleで遊んでみた。

なんだかずっとコピペ・・・。

http://dist.codehaus.org/gradle/gradle-0.3-all.zip

ダウンロードしたzipファイル解凍

解凍先が/opt/gradle-0.3の場合

$ export GRADLE_HOME=/opt/gradle-0.3
  • PATHを通す
$ export PATH=$PATH:$GRADLE_HOME/bin
  • 動作確認

"gradle -v"で、こんな感じのが出たらOK

$ gradle -v
Gradle 0.3
Gradle buildtime: Wednesday, August 20, 2008 11:52:20 PM CEST
Groovy 1.5.5
Java 1.5.0_13
JVM 1.5.0_13-119
JVM Vendor: Apple Inc.
OS Name: Mac OS X
  • 試してみる

ビルドファイル"build.gradle"を作成

//ハローワールド
createTask('hello') {
  println 'ハロー'
}

実行!

$ gradle hello
Buildfilename: build.gradle
....省略....
++ Loading Project objects
++ Configuring Project objects
Project= : evaluated.
++++ Starting build for primary task 'hello'.
Executing: :hello
ハロー

BUILD SUCCESSFUL

Total time: 0.873 secs

デフォルトタスクを指定

defaultTasks "hello"
//ハローワールド
createTask('hello') {
  println 'ハロー'
}

引数なしで実行!結果は上と同じ.

$ gradle
  • いろいろ試してみる。(ソースのみ ※今後詳しく書く)
//デフォルトタスクを(複数)指定
defaultTasks "hello","task2"

createTask('hello') {
  println 'ハロー'
}

//ダイナミックにタスク定義
4.times { c -> 
  createTask("T_$c") { 
    println "${c}番目のタスク" 
  } 
}
//既存タスクの前に処理を追加したり・・
task('hello').doFirst { 
  println 'helloタスクの前!' 
}
//既存タスクの後に処理を追加したり・・ 
task('hello').doLast { 
  println 'helloタスクの後!' 
}
//task('')書かなくても、こんな感じにショートカットもできる。
hello.doLast { 
    println 'helloタスクの後の後!' 
}

//DAG (Directed Acyclic Graph 無閉路有向グラフ)
message=''
createTask('task0') {task, dag ->
  //task2を持ってるか確認
  if(dag.hasTask(':task2')){
    message = 'task2を通ったよ'
  }else{
    message = '(wow)'
  }
  println message
}
//task1→task0に依存
createTask('task1', dependsOn: 'task0') {
    println 'task1実行'
}
//task2→task1に依存なので更にtask0も依存
createTask('task2', dependsOn: 'task1') {
    println 'task2実行'
}