More Related Content
Similar to Gws 20120521 gradle
Similar to Gws 20120521 gradle (20)
More from Nobuhiro Sue (20)
Gws 20120521 gradle
- 2. 自己紹介
須江 信洋(すえ のぶひろ)
Twitter: @nobusue
http://www.facebook.com/profile.php?id=732337
788
かれこれ10年位、JavaEE関連の仕事をしてます
G*(Groovy関連技術)との関わり
Groovyコミュニティ(JGGUG)サポートスタッフ
「プログラミングGROOVY」執筆チーム
「Groovy イン・アクション」翻訳チーム
Groovyで作ったBot飼ってます(@hatena_groovy)
2
- 3. ビルドの悩み
Java(特にJava EE)のビルドプロセスは複雑
src -> compile -> test -> package ・・・
依存ライブラリの管理
環境の差異への対応
Windows / MacOS / Linux / Unix
IDE / CI / Test / Staging / Production
Java以外のJVM言語への対応
これに応えるべく、ビルドツールが進化
3
- 4. ビルドツールの進化
パラダイム
手続き的 規約によるビルド
ビルド定義
スクリプト Make Gradle
XML Ant Maven
4
- 5. http://gradle.org/
Ant/Mavenの課題を解決する次世代ビルドツール
AntとMavenの「いいとこどり」 2012/5/21現在
HibernateやSpringSourceで使われている 1.0-rc-3が最新
標準化と柔軟性の両立
Mavenライクな標準ディレクトリ構造を使い、そこから外れ
る部分は自由にカスタマイズ可能
依存ライブラリはMavenリポジトリでもローカルJARでも好
きなように定義できる
マルチプロジェクトへの対応
ビルドスクリプトはGroovyで記述
DSLによるシンプルかつ可読性の高いビルド定義
条件分岐や繰り返しなど、任意の処理をGroovyで
5
- 6. 要するにGradleとは?
Mavenのように
規約によるビルドで効率的に記述でき、
Antのように
プロジェクト特有の事情に柔軟に対応でき、
Makeのように
スクリプトのパワーを活かしたビルドが実現できる
クロスプラットフォーム対応次世代ビルドツール
6
- 7. Gradleのビルドスクリプト(例)
apply plugin: 'java' Javaプラグインを適用
repositories {
mavenCentral() 依存性解決にMavenリポジトリを利用
}
プロダクトコードのコンパイル時の依存先
dependencies {
compile(
group: 'commons-collections',
name: 'commons-collections',
version: '3.2')
testCompile( テストコードのコンパイル時の依存先
group: 'junit',
name: 'junit',
version: '4.+')
}
7
- 10. Gradle DSL
素朴な疑問
build.gradleに書いてある”apply”と
か”repositories”とか”dependencies”とか何?
なんかGroovyスクリプトと違くね?
お答え
applyもrepositoriesもdependenciesも実はメソッド
です(引数のカッコを省略してるだけ)
Gradleの文法はGroovyの内部DSLとして定義
詳しいことは・・・・
http://monochromeroad.com/artifacts/gradl
e/userguide/writing_build_scripts.html#N11
360
10
- 11. 条件分岐も簡単
task "OsDependTask" << {
def os = System.getProperty("os.name")
if(os.contains("Windows")) {
println "Windows用の処理" }
else if(os.contains("Mac OS")) {
println "Mac OS用の処理" }
else { println "Linux/Unix用の処理" }
}
11
- 14. AntからGradleへ
Gradleは既存のAnt資産を活用できる
Antのbuild.xmlをそのまま読み込んで実行可能
Antターゲット=Gradleタスク
AntタスクをGradleから直接利用可能
GroovyのAntBuilderが組み込まれている
AntタスクとGradleタスクを共存することも可能
相互に依存するタスクも定義できる
AntタスクをGradleから拡張することもできる
Gradleは「Better Ant」としても使える
Mavenとの大きな違い
Antから段階的にGradleへ移行できる
14
- 18. Jenkinsとの統合 - Gradle
Gradle wrapperを利用
JDKさえ導入されていれば、Gradleを自動でイン
ストールして実行してくれる
Jenkins上では汎用コマンドとして実行すればよい
Gradle wrapperは、CI用途に限らず、
開発者の環境構築負荷軽減にも有用
18
- 19. Gradle wrapper
[build.gradle]
task wrapper(type: Wrapper) {
gradleVersion = '1.0-milestone-9'
}
Gradle導入済の環境で"gradle wrapper"を実行
すると、Gradleのブートストラップ(gradlew)が生成される
バージョン管理
システム
19
- 24. @nobusueの持論
粗探し(?) される頃から 一人前
Gradleの粗探し
プラグインがまだまだ少ない
日本語の情報が少ない
プロジェクトディレクトリの自動生成機能がな
い
などなど・・・
24
- 26. Gradleを使い始める第一歩
"Gradle User Guide"がおすすめ
http://gradle.org/docs/current/userguide/
userguide.html
[翻訳版]
http://monochromeroad.com/artifacts/gra
dle/userguide/userguide.html
翻訳プロジェクト(@literaliceさん)
https://github.com/literalice/gradle-ja
26
- 27. Jenkins+Gradle
@bluepapa32さんBlog:「Jenkins CI 上で
Gradle を利用する最も簡単な方法」
http://d.hatena.ne.jp/bluepapa32/201103
17/1300376998
時代はGradleだがや
27