Gradle

初期化

$ gradle init --type java-library

java-libralyの他にも、下記オプションを選択できる。

  • basic
  • groovy-library
  • pom
  • scala-library

詳細な説明は、http://www.gradle.org/docs/current/userguide/build_init_plugin.html

変数の定義

文字列の書き方

Stringはシングルクォートで囲む。GStringはダブルクォートでくくる。GStringでは式を展開して文字列として埋め込むことが出来る。

println "jdk -> ${jdk}"

変数の定義

Gradleのpropertiesに変数を追加するときは、extraプロパティを使う。

ext {
  jdk = '1.8'
  encoding = 'UTF-8'
}

ラッパー

ラッパーを使用してGradleを内包して配布することで、使用者がGradleをインストールしていなくても
すぐにPJを開始することが出来る。
また、Gradleの使用バージョンを統一させることが出来る。
task wrapper(type: Wrapper) {
    gradleVersion = '2.0'
}

依存関係の管理

  • compile ... プロダクションクラスのコンパイル時に依存するライブラリー
  • runtime ... 実行時に依存するライブラリー(コンパイルには用いられない)
  • testCompile ... テストクラスのコンパイル時に依存するライブラリー
  • testRuntime ... テスト実行時に依存するライブラリー

テストの実行

並行でテストを実行する

並列でテストを実行する。

test {
  maxParallelForks = 5
}

テストをフィルタリングする

Gradleでは、testクラスを全て実行してしまう。そのため、テストクラスに内部クラスが存在した場合、テストが2重起動してしまう。 (かつ、テストレポートにも同じケースが2つ表示される。) なので、内部クラスをテスト対象から除外するように設定を追加してあげる。

test {
  /* 任意のディレクトリーにある Test$ という名称を含むクラスファイルを除外する */
  exclude '**/*Test$*'
}

ちなみに

命名規約としてxxxxTestという書き方にしておくと、上記のようにフィルタリングすることができた。

タスクの実行

タスク名をキャメルケースにしておくと、コマンド実行のときに省略系を使うことが出来る。

task copyJavaImage(type: Copy) {
     from file('../images/java.jpg')
     into "${buildDir}/java-image"
 }
gradle cJI