Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gws 20120521 gradle

2,662 views

Published on

Published in: Technology
  • Be the first to comment

Gws 20120521 gradle

  1. 1. 次世代ビルドツールGradle最新情報アップデート 2012.05.21 須江信洋(@nobusue) http://www.jggug.org/
  2. 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. 3. ビルドの悩み Java(特にJava EE)のビルドプロセスは複雑  src -> compile -> test -> package ・・・  依存ライブラリの管理  環境の差異への対応  Windows / MacOS / Linux / Unix  IDE / CI / Test / Staging / Production  Java以外のJVM言語への対応 これに応えるべく、ビルドツールが進化3
  4. 4. ビルドツールの進化 パラダイム 手続き的 規約によるビルドビルド定義 スクリプト Make Gradle XML Ant Maven4
  5. 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. 6. 要するにGradleとは? Mavenのように 規約によるビルドで効率的に記述でき、 Antのように プロジェクト特有の事情に柔軟に対応でき、 Makeのように スクリプトのパワーを活かしたビルドが実現できる クロスプラットフォーム対応次世代ビルドツール6
  7. 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. 8. OK、「gradle test」を実行だ! Mavenと同様の規約に従って プロダクトコードとテストコードを 配置8
  9. 9. Demo9
  10. 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. 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. 12. 動的タスク定義も簡単4.times { counter -> task "task${counter}" << { println "${counter+1}番目の動的タスクです" }}12
  13. 13. Demo13
  14. 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. 15. GradleでAntのビルド定義を利用[build.gradle]ant.importBuild build.xml[build.xml] <project> <target name="hello"> <echo>Antターゲットの実行</echo> </target> </project> 15
  16. 16. GradleでAntタスクを利用task hello << { ant.echo(Antタスクの実行)}16
  17. 17. Demo17
  18. 18. Jenkinsとの統合 - Gradle Gradle wrapperを利用  JDKさえ導入されていれば、Gradleを自動でイン ストールして実行してくれる  Jenkins上では汎用コマンドとして実行すればよい Gradle wrapperは、CI用途に限らず、 開発者の環境構築負荷軽減にも有用18
  19. 19. Gradle wrapper [build.gradle] task wrapper(type: Wrapper) { gradleVersion = 1.0-milestone-9 } Gradle導入済の環境で"gradle wrapper"を実行すると、Gradleのブートストラップ(gradlew)が生成される バージョン管理 システム 19
  20. 20. Jenkinsのビルド設定20
  21. 21. Jenkinsとの統合 - Spock Spock  レポートはJUnit互換なので、Jenkinsでそのまま 利用可能21
  22. 22. Jenkinsのテストレポート設定 JUnitと同様22
  23. 23. Demo23
  24. 24. @nobusueの持論 粗探し(?) される頃から 一人前 Gradleの粗探し  プラグインがまだまだ少ない  日本語の情報が少ない  プロジェクトディレクトリの自動生成機能がな い  などなど・・・24
  25. 25. Gradleプラグイン、順調に増殖中 http://wiki. gradle.org /display/G RADLE/Plu gins25
  26. 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. 27. Jenkins+Gradle @bluepapa32さんBlog:「Jenkins CI 上で Gradle を利用する最も簡単な方法」  http://d.hatena.ne.jp/bluepapa32/201103 17/1300376998 時代はGradleだがや27
  28. 28. ありがとうございました http://www.facebook.com/orehiji28

×