45
Gradle a new build tool gradle 入門

Gradle a new Generation Build Tool

Embed Size (px)

DESCRIPTION

Gradleという新しいビルドツールについての説明

Citation preview

Page 1: Gradle a new Generation Build Tool

Gradle a new build toolgradle 入門

Page 2: Gradle a new Generation Build Tool

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

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

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

What's Gradle● Antの自由さとMavenの秩序を取り入れた次世

代のビルドツール● 人間には優しくないXMLを捨てたビルドツール● ビルドの設定にはGroovy DSLを採用

○ 設定ファイルはスクリプトに置き換わる○ 直感的に読める設定ファイル

Page 6: Gradle a new Generation Build Tool

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

Ant ... 書き方忘れたorz

<build default="clean"> <task name="build"> <javac </task></build>

Page 8: Gradle a new Generation Build Tool

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

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

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

How to install? (1)● Macの人

○ Brewを使っている人

■ sudo brew install gradle○ Mac Ports使っている人

■ sudo port install gradle

Page 12: Gradle a new Generation Build Tool

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

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

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

How to install? (5)● インストールの確認

○ 適当なディレクトリー・フォルダーにて以下のコマンドを実行する

$ gradle --version

 ● バージョンが表示されればおk。

Page 16: Gradle a new Generation Build Tool

How to install? (6)

うまくいった?

Page 17: Gradle a new Generation Build Tool

Do you have trouble?● Java(1.6以上)はインストールされてますか?● 環境変数JAVA_HOMEは設定されていますか?● 環境変数GRADLE_HOMEは設定されています

か?● 環境変数PATHを壊していませんか?

● Windowsのコードページは932ですか?

Page 18: Gradle a new Generation Build Tool

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

さっそくWebアプリ作ろう

1. プロジェクトホームを作成します。2. プロジェクトホームの直下にビルドファイル(build.

gradle)を作ります。3. ideタスクを実行してIDEを開きます。

4. Servletを作ります。5. テストを書きます。

6. Gradleでテスト実行、Jettyを実行します。

7. warを発行します。

Page 20: Gradle a new Generation Build Tool

1.プロジェクトホーム

$ mkdir sample-web$ cd sample-web$ vim sample-web

Page 21: Gradle a new Generation Build Tool

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

3. ide タスクを実行

$ gradle idea または

 $ gradle eclipse

Page 23: Gradle a new Generation Build Tool

4.Servletをつくります。

Web用のプロジェクト構造を作って、Servletを作ります。

Page 24: Gradle a new Generation Build Tool

5.テストをつくる

JMockItを使いたい人はdependenciesに加えましょう。

JUnit4でテストを書きます。src/test/java以下のパッケージに記述して下さい。

Page 25: Gradle a new Generation Build Tool

6.Gradleでテストを実行

$ gradle testでテストを実行する。

project-home/build/reports/testsにあるindex.htmlにテスト結果が出力される。

Page 26: Gradle a new Generation Build Tool

こんな感じ

Page 27: Gradle a new Generation Build Tool

6.Jettyで試す

$ gradle jettyRunデフォルトはポート8080で起動される

Page 28: Gradle a new Generation Build Tool

6.Jettyで試す

さっそくつなげてみる

Page 29: Gradle a new Generation Build Tool

7.warを発行する

$ gradle war

Page 30: Gradle a new Generation Build Tool

7.warを発行する

warファイルはproject-home/build/libs以下に作成されます。

Page 31: Gradle a new Generation Build Tool

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

タスクをカスタマイズ

● Gradleの強みはそのカスタマイズ性にもあります。○ 規約に基づいたプロパティを利用できます。

○ Groovyの力を借りたカスタマイズが可能です。■ テスト実行前にDBに値を登録する■ プロジェクト作成前に規約に基づいたディレクトリを作

成する■ 発行したwarをサーバーにデプロイする

Page 33: Gradle a new Generation Build Tool

タスクをカスタマイズ

● カスタムタスクの作成

 /** 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

タスクをカスタマイズ

● タスクのライフサイクルとイディオムを覚えておこう

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

タスクをカスタマイズ

● 実行結果

 

Page 36: Gradle a new Generation Build Tool

タスクをカスタマイズ

● タスクのライフサイクルとイディオムを覚えておこう

taskObject closure : Gradle起動時に実行する処理

customTask.doFirst closure : 最初に実行する処理

(後に追加した処理のほうが先に実行される)

customTask.doLast closure : 最後に実行する処理

(Left Shift と同意)

taskObject << closure : 最後に実行する処理を追加

(後に追加した処理の方が後に実行される)

Page 37: Gradle a new Generation Build Tool

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

規約プロパティを参照する

$ gradle properties を実行する

Page 39: Gradle a new Generation Build Tool

規約プロパティを再設定する

例えばコンパイルはJava6で、実行環境はJava5の場合は以下のように

 sourceCompatibility = 1.6targetCompatibility = 1.5 既存の規約プロパティを上書きする

Page 40: Gradle a new Generation Build Tool

規約プロパティを利用する

例えば依存ライブラリーのパスが欲しい場合 task showPath {

project.configurations.each {println it.nameprintln it.asPath

}} 

Page 41: Gradle a new Generation Build Tool

規約プロパティを利用する

実行結果

Page 42: Gradle a new Generation Build Tool

練習

規約どおりのディレクトリーツリーを作るタスクを定義してみよう

 ヒント : ディレクトリーを作る方法

ant.mkdir ( dir : 'src/main/java' )

Page 43: Gradle a new Generation Build Tool

解答例

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

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

Enjoy your project with Fun!

presented by mike_neck