View
5.224
Download
4
Category
Preview:
DESCRIPTION
2014/04/30 (水) 19:00 - 21:00 JJUG&JGGUG 共催ナイトセミナ 「4.30 2時間で分かる!次世代ビルドツールの本命Gradleの全貌」 「発展編」 会社で使うGradle
Citation preview
発展編:会社で使う Gradle林 政利 ( 株式会社ドワンゴ ) @literalice
会社で使うGradle
Gradle は会社でこそ使うもの
インクリメンタルビルド
再現性の高い依存関係解決
後方互換性
POM からビルド作成
build.xml の取り込み
Java ラーに優しい
Groovy
Gradle 開発サイクルの制定
リポジトリ互換
気軽なプラグイン作成
簡便なファイル API
Ant タスクが使える
インクリメンタルビルド
再現性の高い依存関係解決
後方互換性
POM からビルド作成
build.xml の取り込み
Java ラーに優しい
Groovy
Gradle 開発サイクルの制定
リポジトリ互換
気軽なプラグイン作成
簡便なファイル API
Ant タスクが使える
信頼性の高いビルド
気軽なカスタマイズ
既存環境の活用
信頼性の高いビルド
俺のパソコンでは動いていたのに…
Gradle の依存関係キャッシュ管理
repositories { maven { url "http://repo.mycompany.com/maven2" }}dependencies { compile "org.hibernate:hibernate-core:3.6.7.Final" testCompile "junit:junit:4.+"}
~\.ivy2\cache\com.google.guava\guava\jars\guava-11.0.2.jar
Gradle のキャッシュパス
Ivy のキャッシュパス
~\.gradle\caches\artifacts-26\filestore\com.google.guava\guava\11.0.2\jar\35a3c69e19d72743cac83778aecbee68680f63eb\guava-11.0.2.jar
ビルドの信頼性 += Gradle ラッパー
Gradle バージョンの管理
ビルドツールのバージョンを上げたらヘンなことになった
Gradle の機能追加サイクル
試験的@Incubating
公開
非推奨@Deprecat
ed削除
代替機能
’’ 公開状態の機能は、非推奨とならない限り決して削除されたり意図的に変更されたりすることはありません。’’
―― Gradle ユーザーガイド付録 C 機能のライフサイクル
比較ビルド
build.gradle
1.11
1.12
apply plugin: "compare-gradle-builds"
compareGradleBuilds { sourceBuild { projectDir "." gradleVersion "1.11" } targetBuild { projectDir "." gradleVersion "1.12" }}
信頼性の高いビルド
気軽なカスタマイズ
独自のプラグイン独自のタスク独自のビルドルール…
プラグインプロジェクト
プラグインプロジェクト
プラグインプロジェクト
プラグインプロジェクト
ビルドライフサイクル
pom.xml
独自のプラグイン独自のタスク…
Gradle の場合
XXX.java
気軽なカスタマイズ
既存環境の活用
Ant タスクpom.xml
社内リポジトリbuild.xml
既存の Maven リポジトリを活用
repositories { maven { url "http://repo.mycompany.com/maven2" }}dependencies { compile "org.hibernate:hibernate-core:3.6.7.Final" testCompile "junit:junit:4.+"}
Maven リポジトリ
既存の Ivy リポジトリを活用
repositories { ivy { url "http://repo.mycompany.com/repo" }}dependencies { compile "org.hibernate:hibernate-core:3.6.7.Final" testCompile "junit:junit:4.+"}
Ivy リポジトリ
既存のライブラリフォルダを活用
repositories { flatDir dir: "libs"}
dependencies { compile "org.hibernate:hibernate-core:3.6.7.Final" testCompile "junit:junit:4.+"}
既存の Ant タスクを活用
’’build.xml を利用するよりも、 Gradle ビルドの中で Ant タスクを使う方がはるかに簡単で強力’’
―― Gradle ユーザーガイド第 17 章 Gradle から Ant を使う
’’Gradle では、 Ant のタスクはファーストクラス・オブジェクトです’’
―― Gradle ユーザーガイド第 2 章 概要
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 版
既存の 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 ファイルを作成します" classpath("dist/lib/sample-ant-project-0.1.jar") webInf { from ("web/WEB-INF") }}
既存の pom.xmlを活用
Mavenプラグインは
使えません
build.gradle
既存の pom.xml を活用
pom.xml
gradle init --type pom
既存のビルドツールを活用
’’ 私たちは、ビルドはすべてのチームメンバーに対してできるだけ分かりやすいものであるべきだと考えています。
(中略)
私たちは、 Java 世界の住人にとって断然飛び抜けた分かりやすさを提供する Groovy を選択しました。’’
―― Gradle ユーザーガイド第 2 章 概要
既存の知識を活用
インクリメンタルビルド
再現性の高い依存関係解決
後方互換性
POM からビルド作成
build.xml の取り込み
Java ラーに優しい
Groovy
Gradle 開発サイクルの制定
リポジトリ互換
気軽なプラグイン作成
簡便なファイル API
Ant タスクが使える
信頼性の高いビルド
気軽なカスタマイズ
既存環境の活用
ご清聴ありがとうございました
Recommended