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.
発展編:会社で使うGradle
林 政利 (株式会社ドワンゴ) @literalice
会社で使うGradle
Gradleは会社でこそ使うもの
POMからビルド作成
POMからビルド作成
信頼性の高いビルド
気軽なカスタマイズ
既存環境の活用
信頼性の高いビルド
俺のパソコンでは動いて
いたのに…
Gradleの依存関係キャッシュ管理
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
dependencies {
compile "org.hibernate...
~.ivy2cachecom.google.guavaguavajarsguava-11.0.2.jar
Gradleのキャッシュパス
Ivyのキャッシュパス
~¥.gradle¥caches¥artifacts-
26¥filestore¥c...
ビルドの信頼性 += Gradleラッパー
Gradleバージョンの管理
ビルドツールのバージョンを
上げたらヘンなことになった
Gradleの機能追加サイクル
試験的
@Incubating
公開
非推奨
@Deprecate
d
削除
代替機能
’’公開状態の機能は、非推奨とならない限り決して削除されたり意図
的に変更されたりすることはありません。’’
―― Grad...
比較ビルド
build.gradle
1.11
1.12
apply plugin: "compare-
gradle-builds"
compareGradleBuilds {
sourceBuild {
projectDir "."
gradleVersion "1.11"
}
targetBui...
信頼性の高いビルド
気軽なカスタマイズ
独自のプラグイン
独自のタスク
独自のビルドルール
…
プラグイン
プロジェクト
プラグイン
プロジェクト
プラグイン
プロジェクト
プラグイン
プロジェクト
ビ
ル
ド
ラ
イ
フ
サ
イ
ク
ル
pom.xml
独自のプラグイン
独自のタスク
…
Gradleの場合
XXX.java
気軽なカスタマイズ
既存環境の活用
Antタスク
pom.xml
社内リポジトリ
build.xml
既存のMavenリポジトリを活用
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
dependencies {
compile "org.hibernate:h...
既存のIvyリポジトリを活用
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
dependencies {
compile "org.hibernate:hiberna...
既存のライブラリフォルダを活用
repositories {
flatDir dir: "libs"
}
dependencies {
compile "org.hibernate:hibernate-
core:3.6.7.Final"
te...
既存のライブラリ管理を活用
既存のAntタスクを活用
’’build.xmlを利用するよりも、Gradleビルドの
中でAntタスクを使う方がはるかに簡単で強力’’
―― Gradleユーザーガイド第17章 GradleからAntを使う
’’Gradleでは、Antのタス...
task zip << {
ant.zip(destfile:'archive.zip') {
fileset(dir: 'src') {
include(name: '**.xml')
exclude(name: '**.java')
}
}...
既存のbuild.xmlを活用
’’Gradleでは、Antのタスクはファーストクラス・オブジェク
トです。
さらにおもしろいことに、Antのプロジェクトも
またファーストクラス・オブジェクトなのです’’
―― Gradleユーザーガイド第2章...
既存のbuild.xmlを活用
ant.importBuild "build.xml"
build.gradle
既存のbuild.xmlを流用
ant.importBuild "build.xml"
task war(type: War, dependsOn: "jar") {
description = "warファイルを作成します"
classpat...
既存のpom.xmlを活用
Maven
プラグインは
使えません
build.gradle
既存のpom.xmlを活用
pom.xml
gradle init --type pom
既存のビルドツールを活用
’’私たちは、ビルドはすべてのチームメン
バーに対してできるだけ分かりやすいもので
あるべきだと考えています。
(中略)
私たちは、Java世界の住人にとって断然飛び
抜けた分かりやすさを提供するGroovyを選択
しました。’’
―― Gra...
既存の知識を活用
POMからビルド作成
信頼性の高いビルド
気軽なカスタマイズ
既存環境の活用
ご清聴ありがとうございました
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advanced
Upcoming SlideShare
Loading in …5
×

Jjug 20140430 gradle_advanced

7,542 views

Published on

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

Published in: Technology
  • Be the first to comment

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. ご清聴ありがとうございました

×