Your SlideShare is downloading. ×
Gws 20120521 gradle
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Gws 20120521 gradle

2,011
views

Published on

Published in: Technology

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,011
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
13
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 次世代ビルドツールGradle最新情報アップデート 2012.05.21 須江信洋(@nobusue) http://www.jggug.org/
  • 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 Maven4
  • 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
  • 8. OK、「gradle test」を実行だ! Mavenと同様の規約に従って プロダクトコードとテストコードを 配置8
  • 9. Demo9
  • 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
  • 12. 動的タスク定義も簡単4.times { counter -> task "task${counter}" << { println "${counter+1}番目の動的タスクです" }}12
  • 13. Demo13
  • 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
  • 15. GradleでAntのビルド定義を利用[build.gradle]ant.importBuild build.xml[build.xml] <project> <target name="hello"> <echo>Antターゲットの実行</echo> </target> </project> 15
  • 16. GradleでAntタスクを利用task hello << { ant.echo(Antタスクの実行)}16
  • 17. Demo17
  • 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
  • 20. Jenkinsのビルド設定20
  • 21. Jenkinsとの統合 - Spock Spock  レポートはJUnit互換なので、Jenkinsでそのまま 利用可能21
  • 22. Jenkinsのテストレポート設定 JUnitと同様22
  • 23. Demo23
  • 24. @nobusueの持論 粗探し(?) される頃から 一人前 Gradleの粗探し  プラグインがまだまだ少ない  日本語の情報が少ない  プロジェクトディレクトリの自動生成機能がな い  などなど・・・24
  • 25. Gradleプラグイン、順調に増殖中 http://wiki. gradle.org /display/G RADLE/Plu gins25
  • 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-ja26
  • 27. Jenkins+Gradle @bluepapa32さんBlog:「Jenkins CI 上で Gradle を利用する最も簡単な方法」  http://d.hatena.ne.jp/bluepapa32/201103 17/1300376998 時代はGradleだがや27
  • 28. ありがとうございました http://www.facebook.com/orehiji28

×