Jjug 20140430 gradle_advanced

6,690 views
6,804 views

Published on

2014/04/30 (水) 19:00 - 21:00
JJUG&JGGUG 共催ナイトセミナ 「4.30 2時間で分かる!次世代ビルドツールの本命Gradleの全貌」
「発展編」 会社で使うGradle

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,690
On SlideShare
0
From Embeds
0
Number of Embeds
4,820
Actions
Shares
0
Downloads
25
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Jjug 20140430 gradle_advanced

  1. 1. 発展編:会社で使うGradle 林 政利 (株式会社ドワンゴ) @literalice
  2. 2. 会社で使うGradle Gradleは会社でこそ使うもの
  3. 3. POMからビルド作成
  4. 4. POMからビルド作成 信頼性の高いビルド 気軽なカスタマイズ 既存環境の活用
  5. 5. 信頼性の高いビルド
  6. 6. 俺のパソコンでは動いて いたのに…
  7. 7. Gradleの依存関係キャッシュ管理 repositories { maven { url "http://repo.mycompany.com/maven2" } } dependencies { compile "org.hibernate:hibernate-core:3.6.7.Final" testCompile "junit:junit:4.+" }
  8. 8. ~.ivy2cachecom.google.guavaguavajarsguava-11.0.2.jar Gradleのキャッシュパス Ivyのキャッシュパス ~¥.gradle¥caches¥artifacts- 26¥filestore¥com.google.guava¥guava¥11.0.2¥jar¥35 a3c69e19d72743cac83778aecbee68680f63ebguava -11.0.2.jar
  9. 9. ビルドの信頼性 += Gradleラッパー Gradleバージョンの管理
  10. 10. ビルドツールのバージョンを 上げたらヘンなことになった
  11. 11. Gradleの機能追加サイクル 試験的 @Incubating 公開 非推奨 @Deprecate d 削除 代替機能 ’’公開状態の機能は、非推奨とならない限り決して削除されたり意図 的に変更されたりすることはありません。’’ ―― Gradleユーザーガイド付録C 機能のライフサイクル
  12. 12. 比較ビルド build.gradle 1.11 1.12
  13. 13. apply plugin: "compare- gradle-builds" compareGradleBuilds { sourceBuild { projectDir "." gradleVersion "1.11" } targetBuild { projectDir "." gradleVersion "1.12" } }
  14. 14. 信頼性の高いビルド
  15. 15. 気軽なカスタマイズ
  16. 16. 独自のプラグイン 独自のタスク 独自のビルドルール …
  17. 17. プラグイン プロジェクト プラグイン プロジェクト プラグイン プロジェクト プラグイン プロジェクト ビ ル ド ラ イ フ サ イ ク ル pom.xml
  18. 18. 独自のプラグイン 独自のタスク … Gradleの場合 XXX.java
  19. 19. 気軽なカスタマイズ
  20. 20. 既存環境の活用
  21. 21. Antタスク pom.xml 社内リポジトリ build.xml
  22. 22. 既存のMavenリポジトリを活用 repositories { maven { url "http://repo.mycompany.com/maven2" } } dependencies { compile "org.hibernate:hibernate- core:3.6.7.Final" testCompile "junit:junit:4.+" } Mavenリポジトリ
  23. 23. 既存のIvyリポジトリを活用 repositories { ivy { url "http://repo.mycompany.com/repo" } } dependencies { compile "org.hibernate:hibernate- core:3.6.7.Final" testCompile "junit:junit:4.+" } Ivyリポジトリ
  24. 24. 既存のライブラリフォルダを活用 repositories { flatDir dir: "libs" } dependencies { compile "org.hibernate:hibernate- core:3.6.7.Final" testCompile "junit:junit:4.+" }
  25. 25. 既存のライブラリ管理を活用
  26. 26. 既存のAntタスクを活用 ’’build.xmlを利用するよりも、Gradleビルドの 中でAntタスクを使う方がはるかに簡単で強力’’ ―― Gradleユーザーガイド第17章 GradleからAntを使う ’’Gradleでは、Antのタスクはファーストクラ ス・オブジェクトです’’ ―― Gradleユーザーガイド第2章 概要
  27. 27. task zip << { ant.zip(destfile:'archive.zip') { fileset(dir: 'src') { include(name: '**.xml') exclude(name: '**.java') } } } 既存のAntタスクを活用 <target name='zip'> <zip destfile= 'archive.zip'> <fileset dir='src'> <include name='**.xml'/> <exclude name='**.java'/> </fileset> </zip> </target> XML版Groovy版
  28. 28. 既存のbuild.xmlを活用 ’’Gradleでは、Antのタスクはファーストクラス・オブジェク トです。 さらにおもしろいことに、Antのプロジェクトも またファーストクラス・オブジェクトなのです’’ ―― Gradleユーザーガイド第2章 概要
  29. 29. 既存のbuild.xmlを活用 ant.importBuild "build.xml" build.gradle
  30. 30. 既存のbuild.xmlを流用 ant.importBuild "build.xml" task war(type: War, dependsOn: "jar") { description = "warファイルを作成します" classpath("dist/lib/sample-ant-project-0.1.jar") webInf { from ("web/WEB-INF") } }
  31. 31. 既存のpom.xmlを活用 Maven プラグインは 使えません
  32. 32. build.gradle 既存のpom.xmlを活用 pom.xml gradle init --type pom
  33. 33. 既存のビルドツールを活用
  34. 34. ’’私たちは、ビルドはすべてのチームメン バーに対してできるだけ分かりやすいもので あるべきだと考えています。 (中略) 私たちは、Java世界の住人にとって断然飛び 抜けた分かりやすさを提供するGroovyを選択 しました。’’ ―― Gradleユーザーガイド第2章 概要
  35. 35. 既存の知識を活用
  36. 36. POMからビルド作成 信頼性の高いビルド 気軽なカスタマイズ 既存環境の活用
  37. 37. ご清聴ありがとうございました

×