Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Gradleどうでしょう

15.313 visualizaciones

Publicado el

G*ワークショップ Z 札幌 2014 のスライドです。
某書の抜粋的な何かです。

Publicado en: Software
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Gradleどうでしょう

  1. 1. Gradleどうでしょう G*workshop Z sapporo 2014 2014/09/27
  2. 2. 自己紹介 •綿引 琢磨(わたびき たくま) •株式会社デライトテクノロジーズ 代表取締役 •日本Grails/Groovyユーザーグループ 運営委員 •twitter : @bikisuke
  3. 3. すいません、間に合いませんでした... •「Gradle徹底入門(仮)」(翔泳社) •@masanobuimai, @nobusue, @literalice, @bikisuke の共著 •Gradle2.0ベース(Gradle2.1トピック有) •500ページ超の手頃な鈍器 •2014年11月刊行予定(たぶん...)
  4. 4. 今日は刊行より一足先に Gradle徹底入門 を旅することにします。
  5. 5. とはいえ、、、さすがに 全部はできないので 抜粋してお送りします。
  6. 6. 本日のアジェンダ • スタートアップGradle • Javaプロジェクトのビルド • Gradleの基礎 • Gradleでのテスト
  7. 7. スタートアップGradle
  8. 8. Gradleとは • OSSのビルドツール • 他のビルドツールより優れてる(点が多い) • GroovyベースのDSLで柔軟性が高い • 拡張しやすいアーキテクチャを採用 • 最新バージョンは 2.1(2014年9月時点)
  9. 9. なぜGradleなのか? • ビルドスクリプトがシンプル • プラグインが作りやすい • 既存のツールの資産を活用できる • Maven Central リポジトリを参照可能 • いろんな言語に対応(中) • Android の公式ビルドツールとして採用 • ここ最近は C/C++ にも力を入れている
  10. 10. ビルドツール比較 make Ant Maven Gradle ビルド定義 パラダイム 強み 弱み スクリプトXML XML スクリプト 手続き的手続き的規約ベース規約ベース 非常にコンパクト基本機能がシンプル クロスプラットフォーム 規約による標準化 依存関係管理 規約による標準化 依存関係管理 高い柔軟性/拡張性 移植性問題 依存関係管理なし 規約無く再利用に難有り 依存関係管理なし 定義ファイルの柔軟性 規約外の場合が困難 定義ファイルの柔軟性IDE連携にやや難有り
  11. 11. Gradleのインストール • 前提条件: JDK6以上 • Mac/Unix系:GVMが便利 • http://gvmtool.net/ • $ gvm install gradle • Windows: 公式サイトからダウンロード • http://www.gradle.org/downloads • ZIP解凍して、環境変数Pathに <GRADLE_HOME>bin
  12. 12. Hello, Gradle! // build.gradle task hello << { println ‘Hello, Gradle!’ }
  13. 13. Build Initプラグイン を使ってみる(1/2) • Gradle標準プラグインのひとつ • ビルドプロジェクトの雛形を生成 • basic: ビルドスクリプト、Gradleラッパーを生成 • pom: pom.xml からビルドスクリプト、Gradleラッパーを生成 • java-library: basic + Java規約ディレクトリを生成 • groovy-library: basic + Groovy規約ディレクトリを生成 • scala-library: basic + Scala規約ディレクトリを生成
  14. 14. Build Initプラグイン を使ってみる(2/2) $ gradle init --type java-library : $ gradle build
  15. 15. Javaプロジェクト のビルド
  16. 16. Javaプラグイン •Javaプロジェクトのコンパイル、テスト、 アーカイブに必要なタスク、プロパティ、 規約などを提供 • ソースセット: src/main/java, src/main/resources, src/test/java, src/test/resources • タスク: clean, compileJava, test, jar など • プロパティ: sourceSets, sourceCompatibility, reportsDir, testReportDir, archivesBaseName など
  17. 17. Javaプラグインのタスク
  18. 18. Javaのビルドでよく使用するプロパティ タスクプロパティ用途 compileJava/ compileTestJava options エンコーディングやブートクラスパスなどのコンパ イルオプションを追加する際に使用 jar archiveName JARファイル名を設定する際に使用 test minHeapSize テストプロセスに-Xmsを設定する際に使用 tteesstt maxHeapSize テストプロセスに-Xmxを設定する際に使用 jvmArgs ヒープ以外のJVMパラメータを設定する際に使用 - sourceCompatibility コンパイル時に使用するJavaのバージョン - targetCompatibility クラス生成時のターゲットとするJavaのバージョン
  19. 19. Javaプロジェクトの ビルドスクリプト定義例 apply plugin: 'java' // Gradle 2.0 def defaultEncoding = 'UTF-8' [compileJava, compileTestJava]*.options*.encoding = defaultEncoding sourceCompatibility = 1.7 targetCompatibility = 1.7 jar { archiveName = 'gws-sapporo.jar' } test { minHeapSize = '512m' maxHeapSize = '512m' jvmArgs '-XX:MaxPermSize=256m' }
  20. 20. Applicationプラグイン を使ってみる(1/2) // Gradle 2.1 plugins { id ‘application’ } mainClassName = 'com.example.Main'
  21. 21. Applicationプラグイン を使ってみる(2/2) $ gradle run
  22. 22. Gradleの基礎
  23. 23. Gradleのアーキテクチャ ビルドスクリプト サードパーティ/コミュニティ(野良) プラグイン Gradle 標準プラグイン Gradle コアライブラリ Groovy OSS ライブラリ Java JavaVM
  24. 24. Gradleのアーキテクチャ ビルドスクリプト サードパーティ/コミュニティ(野良) プラグイン Gradle 標準プラグイン Gradle コアライブラリ Groovy OSS ライブラリ Java JavaVM Gradle
  25. 25. ビルドの入力情報
  26. 26. ビルドの入力情報
  27. 27. 初期化スクリプト • ビルドの最初で実行されるGroovyスクリプト • 主にユーザー情報や実行環境などの初期設定 を行うために使用 • デフォルトは init.gradle • -I (--init-script) <FILE_NAME> でもOK
  28. 28. 設定スクリプト • ビルド対象のプロジェクトの設定を行う Groovyスクリプト • 主にビルドに参加するプロジェクトを定義す る用途で使用 • デフォルトは settings.gradle • -c (--settings-file) <FILE_NAME> でもOK
  29. 29. ビルドスクリプト • ビルドの定義を記述するスクリプトファイル • ビルド対象がシンプルなものであれば、 このファイル1つあればOK • デフォルトは build.gradle • -b (--build-file) <FILE_NAME> でもOK
  30. 30. スクリプトファイルの構成要素 • ステートメント • 変数宣言、プロパティ設定など一般 的なプログラミングでのそれと同義 • スクリプトブロック • ある設定を行うための領域 • 実体はただのクロージャで、Gradle のドメインオブジェクトに委譲
  31. 31. Gradleのドメインオブジェクト •Gradleではビルド処理を行う実行基盤 とビルド対象をドメインモデルで表現 •Mavenでいうところの Project Object Model みたいなもの •例えば... •プロジェクト → Projectオブジェクト
  32. 32. Gradleの三大要素 •Projectオブジェクト(プロジェクト) • 処理対象を表すコアドメイン • 必ず1つ委譲のプロジェクトが存在する •Taskオブジェクト(タスク) • 作業単位を表すコアドメイン • ユーザーが実行できる最小単位 •Pluginオブジェクト(プラグイン) • 特定処理のための機能コンポーネント • タスク、プロパティ、規約などをパッケージング
  33. 33. DSLとドメインオブジェクトの関係 apply plugin: 'java' repositories { jcenter() } dependencies { testCompile 'junit:junit:4.11' } task myTest(type:Test) << { println '俺のテストタスクを実行したった。' }
  34. 34. DSLとドメインオブジェクトの関係 apply plugin: 'java' repositories { jcenter() } dependencies { testCompile 'junit:junit:4.11' } task myTest(type:Test) << { println '俺のテストタスクを実行したった。' } Projectオブジェクト
  35. 35. DSLとドメインオブジェクトの関係 JavaPlugin オブジェクト apply plugin: 'java' repositories { jcenter() } dependencies { testCompile 'junit:junit:4.11' } task myTest(type:Test) << { println '俺のテストタスクを実行したった。' }
  36. 36. DSLとドメインオブジェクトの関係 apply plugin: 'java' repositories { jcenter() } dependencies { testCompile 'junit:junit:4.11' } task myTest(type:Test) << { println '俺のテストタスクを実行したった。' } JavaPlugin のTestタスクを拡張
  37. 37. タスクの記述方法いろいろ task showDescription << { println description } showDescription.description = 'showDescriptionタスクです。' task showDescription { description = 'showDescriptionタスクです。' doLast { println description } } task showDescription(description: 'showDescriptionタスクです。') << { println description }
  38. 38. Gradleでのテスト
  39. 39. Gradleでできること • JUnit/TestNGのテスト実行 • 特定のテストだけ実行 • テストの並列実行 • etc.
  40. 40. JUnit/TestNGのテスト実行 • JUnit • Javaプラグインを適用すると デフォルトで使用可能 • TestNG • test ブロックに useTestNG() と 書くことで使用可能になる
  41. 41. 特定のテストだけ実行 test { filter { // 特定のパッケージのテストだけを実行 includeTestsMatching "com.example.*" // クラスのサフィックスが一致するものだけを実行 includeTestsMatching "*IT" } }
  42. 42. テストの並列実行 // 利用可能なプロセッサー数を取得 def processNumber = Runtime.runtime.availableProcessors() test { maxParallelForks = processNumber - 2 }
  43. 43. 以上、抜粋でお送りし ましたが、Gradleには もっといろいろな機能や 仕組みがあります。
  44. 44. 今日説明してないこと 依存関係管理 カスタムプラグインの作成 IDE連携アーカイブの作成Jenkins連携 Androidプロジェクトでの適用 アーティファクトの公開 独自Gradleの作成 カスタムタスクのAnt/Mavenからの移行 作成 プラグインポータル マルチプロジェクト
  45. 45. ということで、刊行の暁 には、是非とも一読 いただきたく存じます。
  46. 46. ご清聴ありがとう ございました。

×