gradle a new generation build tool
DESCRIPTION
Gradleという新しいビルドツールについての説明TRANSCRIPT
![Page 1: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/1.jpg)
Gradle a new build toolgradle 入門
![Page 2: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/2.jpg)
Who presents this?● name : mike_neck● job : no jobs now● specialized : Java / Groovy / Javascript● I'm establishing a company specialized at
Groovy products -- Grails, Gradle, SprinG roo.
● And I'm creating FxJsJUnit -- Javascript testing framework with JavaFX.
![Page 3: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/3.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 4: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/4.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 5: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/5.jpg)
What's Gradle● Antの自由さとMavenの秩序を取り入れた次世
代のビルドツール● 人間には優しくないXMLを捨てたビルドツール● ビルドの設定にはGroovy DSLを採用
○ 設定ファイルはスクリプトに置き換わる○ 直感的に読める設定ファイル
![Page 6: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/6.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 7: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/7.jpg)
Ant ... 書き方忘れたorz
<build default="clean"> <task name="build"> <javac </task></build>
![Page 8: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/8.jpg)
Maven ... 長い
<groupId>org.mikeneck.sample</group><artifactId>gradle-sample</artifactId><version>0.0.1-SNAPSHOT</version><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</...
![Page 9: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/9.jpg)
Gradle ... 簡潔!
apply plugin : 'java' group = 'org.mikeneck.sample'version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.6targetCompatibility = 1.6
![Page 10: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/10.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 11: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/11.jpg)
How to install? (1)● Macの人
○ Brewを使っている人
■ sudo brew install gradle○ Mac Ports使っている人
■ sudo port install gradle
![Page 12: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/12.jpg)
How to install? (2)● xnix系の人
○ wget http://goo.gl/WJm7L○ unzip gradle-1.0-milestone-9-all.zip○ sudo mv gradle-1.0-milestone-9
/path/to/gradle_home○ export
GRADLE_HOME=/path/to/gradle_home/gradle-1.0-milestone-9
○ export PATH=$PATH:GRADLE_HOME/bin
![Page 13: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/13.jpg)
How to install? (3)● Macの場合は下記のディレクトリーに入れるのが
いいかも
/Library/Frameworks/Gradle.framework/Versions● で、ln -s gradle-milestone-9 Current
● export GRADLE_HOME=/Library/Frameworks/Gradle.framework/Versions/Current
![Page 14: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/14.jpg)
How to install? (4)● Windowsの人
○ http://goo.gl/WJm7L をダウンロード
○ gradle-milestone-9-all.zipを解凍○ 作成されたフォルダをどこか適当なフォルダに配置する。
( 例えば C:¥gradle )○ マイコンピューター→プロパティから環境変数設定画面
を開いて以下のとおり設定する。
GRADLE_HOME → C:¥gradle¥gradle-milestone-9PATH → ;%GRADLE_HOME%¥bin を追加
![Page 15: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/15.jpg)
How to install? (5)● インストールの確認
○ 適当なディレクトリー・フォルダーにて以下のコマンドを実行する
$ gradle --version
● バージョンが表示されればおk。
![Page 16: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/16.jpg)
How to install? (6)
うまくいった?
![Page 17: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/17.jpg)
Do you have trouble?● Java(1.6以上)はインストールされてますか?● 環境変数JAVA_HOMEは設定されていますか?● 環境変数GRADLE_HOMEは設定されています
か?● 環境変数PATHを壊していませんか?
● Windowsのコードページは932ですか?
![Page 18: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/18.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 19: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/19.jpg)
さっそくWebアプリ作ろう
1. プロジェクトホームを作成します。2. プロジェクトホームの直下にビルドファイル(build.
gradle)を作ります。3. ideタスクを実行してIDEを開きます。
4. Servletを作ります。5. テストを書きます。
6. Gradleでテスト実行、Jettyを実行します。
7. warを発行します。
![Page 20: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/20.jpg)
1.プロジェクトホーム
$ mkdir sample-web$ cd sample-web$ vim sample-web
![Page 21: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/21.jpg)
2.build.gradleapply plugin : 'java'apply plugin : 'idea'apply plugin : 'eclipse'apply plugin : 'war'apply plugin : 'jetty'repositories { mavenCentral() }dependencies {
compile 'org.apache.geronimo.specs:geronimo-servlet_2.5_spec:1.2'testCompile 'junit:junit:4.10'
}sourceCompatibility = 1.6targetCompatibility = 1.6
![Page 22: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/22.jpg)
3. ide タスクを実行
$ gradle idea または
$ gradle eclipse
![Page 23: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/23.jpg)
4.Servletをつくります。
Web用のプロジェクト構造を作って、Servletを作ります。
![Page 24: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/24.jpg)
5.テストをつくる
JMockItを使いたい人はdependenciesに加えましょう。
JUnit4でテストを書きます。src/test/java以下のパッケージに記述して下さい。
![Page 25: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/25.jpg)
6.Gradleでテストを実行
$ gradle testでテストを実行する。
project-home/build/reports/testsにあるindex.htmlにテスト結果が出力される。
![Page 26: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/26.jpg)
こんな感じ
![Page 27: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/27.jpg)
6.Jettyで試す
$ gradle jettyRunデフォルトはポート8080で起動される
![Page 28: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/28.jpg)
6.Jettyで試す
さっそくつなげてみる
![Page 29: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/29.jpg)
7.warを発行する
$ gradle war
![Page 30: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/30.jpg)
7.warを発行する
warファイルはproject-home/build/libs以下に作成されます。
![Page 31: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/31.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 32: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/32.jpg)
タスクをカスタマイズ
● Gradleの強みはそのカスタマイズ性にもあります。○ 規約に基づいたプロパティを利用できます。
○ Groovyの力を借りたカスタマイズが可能です。■ テスト実行前にDBに値を登録する■ プロジェクト作成前に規約に基づいたディレクトリを作
成する■ 発行したwarをサーバーにデプロイする
![Page 33: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/33.jpg)
タスクをカスタマイズ
● カスタムタスクの作成
/** task taskName はタスクを新規に定義 **/
task customTask << { println 'do something' } customTask { println 'load task' }customTask.doFirst { println 'do first' }customTask.doLast { println 'do last' }
![Page 34: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/34.jpg)
タスクをカスタマイズ
● タスクのライフサイクルとイディオムを覚えておこう
task customTask << { println 'do something' }customTask { println 'load task' }customTask << { println 'do task' }customTask.doFirst { println 'do first' }customTask.doLast { println 'do last' }customTask << { println 'do lastly' }
![Page 35: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/35.jpg)
タスクをカスタマイズ
● 実行結果
![Page 36: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/36.jpg)
タスクをカスタマイズ
● タスクのライフサイクルとイディオムを覚えておこう
taskObject closure : Gradle起動時に実行する処理
customTask.doFirst closure : 最初に実行する処理
(後に追加した処理のほうが先に実行される)
customTask.doLast closure : 最後に実行する処理
(Left Shift と同意)
taskObject << closure : 最後に実行する処理を追加
(後に追加した処理の方が後に実行される)
![Page 37: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/37.jpg)
Agender● What's Gradle● Comparison with Ant, Maven● How to install?● Let's make Web Application!● Task customization● Convention Properties
![Page 38: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/38.jpg)
規約プロパティを参照する
$ gradle properties を実行する
![Page 39: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/39.jpg)
規約プロパティを再設定する
例えばコンパイルはJava6で、実行環境はJava5の場合は以下のように
sourceCompatibility = 1.6targetCompatibility = 1.5 既存の規約プロパティを上書きする
![Page 40: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/40.jpg)
規約プロパティを利用する
例えば依存ライブラリーのパスが欲しい場合 task showPath {
project.configurations.each {println it.nameprintln it.asPath
}}
![Page 41: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/41.jpg)
規約プロパティを利用する
実行結果
![Page 42: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/42.jpg)
練習
規約どおりのディレクトリーツリーを作るタスクを定義してみよう
ヒント : ディレクトリーを作る方法
ant.mkdir ( dir : 'src/main/java' )
![Page 43: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/43.jpg)
解答例
def langs = ['java']task structure << {
project.sourceSets.each { set ->langs.each { lang ->
ant.mkdir dir : "src/${set.name}/${lang}"}
}}
![Page 44: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/44.jpg)
Note● Gradle Home Page
○ http://www.gradle.org● User Guide
○ http://www.gradle.org/docs/current/userguide/userguide_single.html
● DSL Reference○ http://www.gradle.org/docs/current/dsl/index.
html
![Page 45: Gradle a new Generation Build Tool](https://reader031.vdocument.in/reader031/viewer/2022020110/54b6e8784a7959aa3d8b4747/html5/thumbnails/45.jpg)
Enjoy your project with Fun!
presented by mike_neck