Successfully reported this slideshow.
Your SlideShare is downloading. ×

Gradle a new Generation Build Tool

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 45 Ad

More Related Content

Slideshows for you (19)

Viewers also liked (20)

Advertisement

Similar to Gradle a new Generation Build Tool (20)

More from Shinya Mochida (20)

Advertisement

Recently uploaded (20)

Gradle a new Generation Build Tool

  1. 1. Gradle a new build tool gradle 入門
  2. 2. Who presents this? ● name : mike_neck ● job : no jobs now ● specialized : Java / Groovy / Javascript ● I'm establishing a company specialized at Groovy products -- Grails, Gradle, SprinG roo. ● And I'm creating FxJsJUnit -- Javascript testing framework with JavaFX.
  3. 3. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  4. 4. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  5. 5. What's Gradle ● Antの自由さとMavenの秩序を取り入れた次世 代のビルドツール ● 人間には優しくないXMLを捨てたビルドツール ● ビルドの設定にはGroovy DSLを採用 ○ 設定ファイルはスクリプトに置き換わる ○ 直感的に読める設定ファイル
  6. 6. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  7. 7. Ant ... 書き方忘れたorz <build default="clean"> <task name="build"> <javac </task> </build>
  8. 8. Maven ... 長い <groupId>org.mikeneck.sample</group> <artifactId>gradle-sample</artifactId> <version>0.0.1-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven. plugins</...
  9. 9. Gradle ... 簡潔! apply plugin : 'java'   group = 'org.mikeneck.sample' version = '0.0.1-SNAPSHOT'   sourceCompatibility = 1.6 targetCompatibility = 1.6
  10. 10. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  11. 11. How to install? (1) ● Macの人 ○ Brewを使っている人 ■ sudo brew install gradle ○ Mac Ports使っている人 ■ sudo port install gradle
  12. 12. How to install? (2) ● xnix系の人 ○ wget http://goo.gl/WJm7L ○ unzip gradle-1.0-milestone-9-all.zip ○ sudo mv gradle-1.0-milestone-9 /path/to/gradle_home ○ export GRADLE_HOME=/path/to/gradle_home/gradle- 1.0-milestone-9 ○ export PATH=$PATH:GRADLE_HOME/bin
  13. 13. How to install? (3) ● Macの場合は下記のディレクトリーに入れるのが いいかも /Library/Frameworks/Gradle. framework/Versions ● で、ln -s gradle-milestone-9 Current ● export GRADLE_HOME=/Library/Frameworks/Gr adle.framework/Versions/Current
  14. 14. How to install? (4) ● Windowsの人 ○ http://goo.gl/WJm7L をダウンロード ○ gradle-milestone-9-all.zipを解凍 ○ 作成されたフォルダをどこか適当なフォルダに配置する。 ( 例えば C:¥gradle ) ○ マイコンピューター→プロパティから環境変数設定画面 を開いて以下のとおり設定する。 GRADLE_HOME → C:¥gradle¥gradle-milestone-9 PATH → ;%GRADLE_HOME%¥bin を追加
  15. 15. How to install? (5) ● インストールの確認 ○ 適当なディレクトリー・フォルダーにて以下のコマンドを実 行する $ gradle --version   ● バージョンが表示されればおk。
  16. 16. How to install? (6) うまくいった?
  17. 17. Do you have trouble? ● Java(1.6以上)はインストールされてますか? ● 環境変数JAVA_HOMEは設定されていますか? ● 環境変数GRADLE_HOMEは設定されています か? ● 環境変数PATHを壊していませんか? ● Windowsのコードページは932ですか?
  18. 18. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  19. 19. さっそくWebアプリ作ろう 1. プロジェクトホームを作成します。 2. プロジェクトホームの直下にビルドファイル(build. gradle)を作ります。 3. ideタスクを実行してIDEを開きます。 4. Servletを作ります。 5. テストを書きます。 6. Gradleでテスト実行、Jettyを実行します。 7. warを発行します。
  20. 20. 1.プロジェクトホーム $ mkdir sample-web $ cd sample-web $ vim sample-web
  21. 21. 2.build.gradle apply plugin : 'java' apply plugin : 'idea' apply plugin : 'eclipse' apply plugin : 'war' apply plugin : 'jetty' repositories { mavenCentral() } dependencies { compile 'org.apache.geronimo.specs:geronimo-servlet_2.5_spec:1.2' testCompile 'junit:junit:4.10' } sourceCompatibility = 1.6 targetCompatibility = 1.6
  22. 22. 3. ide タスクを実行 $ gradle idea   または   $ gradle eclipse
  23. 23. 4.Servletをつくります。 Web用のプロジェクト構造を作って、Servletを作ります。
  24. 24. 5.テストをつくる JMockItを使いたい人はdependenciesに加えま しょう。 JUnit4でテストを書きます。src/test/java以下の パッケージに記述して下さい。
  25. 25. 6.Gradleでテストを実行 $ gradle test でテストを実行する。 project-home/build/reports/testsにある index.htmlにテスト結果が出力される。
  26. 26. こんな感じ
  27. 27. 6.Jettyで試す $ gradle jettyRun デフォルトはポート8080で起動される
  28. 28. 6.Jettyで試す さっそくつなげてみる
  29. 29. 7.warを発行する $ gradle war
  30. 30. 7.warを発行する warファイルはproject-home/build/libs以下に作成 されます。
  31. 31. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  32. 32. タスクをカスタマイズ ● Gradleの強みはそのカスタマイズ性にもありま す。 ○ 規約に基づいたプロパティを利用できます。 ○ Groovyの力を借りたカスタマイズが可能です。 ■ テスト実行前にDBに値を登録する ■ プロジェクト作成前に規約に基づいたディレクトリを作 成する ■ 発行したwarをサーバーにデプロイする
  33. 33. タスクをカスタマイズ ● カスタムタスクの作成   /** task taskName はタスクを新規に定義 **/ task customTask << { println 'do something' }   customTask { println 'load task' } customTask.doFirst { println 'do first' } customTask.doLast { println 'do last' }  
  34. 34. タスクをカスタマイズ ● タスクのライフサイクルとイディオムを覚えておこ う task customTask << { println 'do something' } customTask { println 'load task' } customTask << { println 'do task' } customTask.doFirst { println 'do first' } customTask.doLast { println 'do last' } customTask << { println 'do lastly' }  
  35. 35. タスクをカスタマイズ ● 実行結果  
  36. 36. タスクをカスタマイズ ● タスクのライフサイクルとイディオムを覚えておこ う taskObject closure : Gradle起動時に実行する処理 customTask.doFirst closure : 最初に実行する処理 (後に追加した処理のほうが先に実行される) customTask.doLast closure : 最後に実行する処理 (Left Shift と同意) taskObject << closure : 最後に実行する処理を追加 (後に追加した処理の方が後に実行される)
  37. 37. Agender ● What's Gradle ● Comparison with Ant, Maven ● How to install? ● Let's make Web Application! ● Task customization ● Convention Properties
  38. 38. 規約プロパティを参照する $ gradle properties を実行する
  39. 39. 規約プロパティを再設定する 例えばコンパイルはJava6で、実行環境はJava5の 場合は以下のように   sourceCompatibility = 1.6 targetCompatibility = 1.5   既存の規約プロパティを上書きする
  40. 40. 規約プロパティを利用する 例えば依存ライブラリーのパスが欲しい場合   task showPath { project.configurations.each { println it.name println it.asPath } }  
  41. 41. 規約プロパティを利用する 実行結果
  42. 42. 練習 規約どおりのディレクトリーツリーを作るタスクを定 義してみよう   ヒント : ディレクトリーを作る方法 ant.mkdir ( dir : 'src/main/java' )
  43. 43. 解答例 def langs = ['java'] task structure << { project.sourceSets.each { set -> langs.each { lang -> ant.mkdir dir : "src/${set.name}/${lang}" } } }
  44. 44. Note ● Gradle Home Page ○ http://www.gradle.org ● User Guide ○ http://www.gradle. org/docs/current/userguide/userguide_single. html ● DSL Reference ○ http://www.gradle.org/docs/current/dsl/index. html
  45. 45. Enjoy your project with Fun! presented by mike_neck

×