狠狠撸

狠狠撸Share a Scribd company logo
発展編:会社で使うGradle
林 政利 (株式会社ドワンゴ) @literalice
Jjug 20140430 gradle_advanced
会社で使うGradle
Gradleは会社でこそ使うもの
笔翱惭からビルド作成
笔翱惭からビルド作成
信頼性の高いビルド
気軽なカスタマイズ
既存环境の活用
信頼性の高いビルド
俺のパソコンでは動いて
いたのに…
Gradleの依存関係キャッシュ管理
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
dependencies {
compile "org.hibernate:hibernate-core:3.6.7.Final"
testCompile "junit:junit:4.+"
}
~.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
Jjug 20140430 gradle_advanced
ビルドの信頼性 += Gradleラッパー
Gradleバージョンの管理
ビルドツールのバージョンを
上げたらヘンなことになった
Gradleの機能追加サイクル
試験的
@Incubating
公開
非推奨
@Deprecate
d
削除
代替機能
’’公開状態の機能は、非推奨とならない限り決して削除されたり意図
的に変更されたりすることはありません。’’
―― 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章 概要
既存の知识を活用
笔翱惭からビルド作成
信頼性の高いビルド
気軽なカスタマイズ
既存环境の活用
ご清聴ありがとうございました

More Related Content

Jjug 20140430 gradle_advanced