Gradle入門

42
Gradle 入入 入入入入入入入入入入入入入 @orekyuu

description

めたたぐで使った資料

Transcript of Gradle入門

Page 1: Gradle入門

Gradle 入門今日から始めるビルドツール@orekyuu

Page 2: Gradle入門

ビルドツールってなんだ• 名前の通りビルドを行うツール

• 例としては Ant や Maven などがある  Gradle もビルドツールの一つ

Page 3: Gradle入門

Maven

pom.xmlにビルド手順を記述して、コンパイル、テスト、 Javadoc生成などをサポートする。

Page 4: Gradle入門

しかし・・・

pom.xml を書くのが非常に大変・・・

この pom.xml を書く人達を pom 職人と呼ぶこともあるほど。

pom 力たったの 5 か。雑魚め。

Page 5: Gradle入門

Gradle

• Maven のような XML で設定ファイルを書くのではなく、 Groovy と呼ばれる言語で手順を記述

• Gradle Wrapper を使うことでチーム開発が容易に行える

Page 6: Gradle入門

で、 Gradle で何ができるの?• 自動的に必要なライブラリのダウンロード

• 開発環境の生成

• 必要に応じてやりたいことを自分でかける!

Page 7: Gradle入門

Gradle の開発環境を作る

• http://www.gradle.org/から Gradle をダウンロード

• 解凍して適当なフォルダに置く

• gradle_root/bin/ にパスを通しておしまい

• ターミナルで gradle –v を実行して確認

Page 8: Gradle入門

Java プロジェクトを作る• Workspace フォルダを作成

• gradle init –-type java-library をターミナルで実行

Page 9: Gradle入門

Gradle のプロジェクト構成

• src フォルダはこのようなディレクトリにする

•                  src/main/java/ javaファイルを入れる

src/main/resources/ リソースを配置

src/test/java/ テスト用の java ファイル

src/test/resources/ テスト用リソース

Page 10: Gradle入門

src/main/java フォルダに Hello.java を配置

Hello.java の内容は

class Hello {

public static void main(String[] args) {

System.out.println(“Hello”);

}

}

Page 11: Gradle入門

ビルドしてみる• ワークススペース直下で gradle build を実行

Page 12: Gradle入門

完成品を確認

build/libs/ に jar ファイルが作成される

build/classes/ にクラスファイルが作られる

Page 13: Gradle入門

ライブラリを追加してみるgoogle の guava を追加してみる

build.gradle を編集する

repositories {

mavenCentral()

}

dependencies {

compile 'com.google.guava:guava:11.0.2'

}

Page 14: Gradle入門

Guava を使ってみる

import com.google.common.base.Strings;

class Hello {

public static void main(String[] args) {

System.out.println(Strings.repeat("*", 10));

}

}

Hello.java を上のように変更して gradle build

Page 15: Gradle入門

ライブラリへのパスが通り、無事ビルドが成功しました。

このように手動で必要なライブラリをダウンロードすること無く利用することができます。

次に JUnit を使ったテストを書いてみましょう

Page 16: Gradle入門

Sample クラスを作成

Sample.java

public class Sample {

public String getString() {

return “Sample”;

}

}

Page 17: Gradle入門

テストクラスを作成src/test/java/ に TestSample.java を追加

import org.junit.Test;

import static org.junit.Assert.*;

public class SampleTest {

@Test

public void testGetString() throws Exception {

Sample s = new Sample();

assertEquals("Sample", s.getString());

}

}

Page 18: Gradle入門

JUnit をテスト用のライブラリとして追加

dependencies の中に以下を追加

testCompile group: 'junit', name: 'junit', version: '4.11‘

gradle test を実行

今回の例ではテストが通りますが、失敗のパターンを見ておくのもよいかも

Page 19: Gradle入門

基本は分かった そろそろチーム開発をしようチーム全員に Gradle を入れてもらうのは面倒

そこで Gradle Wrapper を使用する

Wrapper 作成には wrapper タスクを実行する

↓ ターミナルで実行

gralde wrapper

Java プロジェクト作成時に wrapper タスクも実行されるので今回は不要

Page 20: Gradle入門

gradle warapper のファイル

gradlew

gradlew.bat

gradle/wrapper/

gradle-wrapper.jar

gradle-wrapper.properties

Git などのバージョン管理システムを使う場合はこれらを格納する。

Page 21: Gradle入門

GradleWrapper でビルド

ラッパーを使用する場合は gradle ではなく、 gradlew コマンドを使用する

gradlew build を実行してみます

初回実行時のみ Gradle をダウンロードしてきます

Page 22: Gradle入門

デフォルトのタスクだとやりたいことできないんだけど• Groovy を使ってタスクを定義することが可能

• スクリプト言語なので非常に書きやすい

Page 23: Gradle入門

タスクの定義方法

タスク定義の方法

task タスク名 {

doLast {

処理

}

}

Page 24: Gradle入門

Hello World

task hello {

doLast {

println ‘Hello World’

}

}

gradle hello を実行して HelloWorld が出力されれば OK

Page 25: Gradle入門

省略記法

task hello << {

println ‘Hello World’

}

上のように doLast を省略することが可能

Page 26: Gradle入門

変数宣言

型 変数名 = 初期値

int a = 4

型に def を使用することで型を指定せず宣言することができる

// 動きます

def a = 1

a = ‘str’

Page 27: Gradle入門

if - else if – else

if ( 条件 ) {

hoge

} else if( 条件 ) {

huge

} else {

hage

}

Page 28: Gradle入門

while

while ( 条件 ) {

処理

}

Page 29: Gradle入門

for

// よくある for

for(i = 0 ; i < 10 ; i++)

// 範囲を使った for

for(i in 0..9)

// リスト

def list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for(i in list)

Page 30: Gradle入門

リスト操作def list = [1, 2, 3, 4, 5]// リスト宣言

def list = [*1..10]//1 から 10 まで連番のリスト

list[3]// 要素の取り出し

list[-2]// 最後から 2 番目の要素を取り出す

list.reverse()// 逆順

list[-5..-1]// 後ろから数えて 5 番目から最後までの要素を取り出す

list += [11, 12]// リストへの追加

list -= [11, 12]// リストから削除

Page 31: Gradle入門

よく使うプロパティ

タスク名 プロパティ名 用途compileJava

compileTestJava options エンコーディングとかコンパイルオプションとか

jar archiveName jarファイル名を設定する時とか

Test

minHeapSize -Xmsを設定maxHeapSize -Xmxを設定

jvmArgs jvm引数を与える- sourceCompatibility コンパイル時の Javaバージョン- targetCompatibility クラス生成時の Javaバージョン

Page 32: Gradle入門

Gradle との連携

Page 33: Gradle入門

Gradle と IntelliJ IDEA

• IntelliJ IDEA は Jet Brains 社が出している Java の IDE

• 高度で軽いコード補完やバージョン管理ツールとの連携が強い

• Gradle との連携がサポートされている神 IDE !!!

Page 34: Gradle入門

IDEA の場合・・・

Gradle プロジェクトを選択して

プロジェクトの名前をつけると完成

Page 35: Gradle入門

タスク表示機能

タスクの表示機能が備わっている。

右クリックからタスクを実行できる

ショートカットキーでも可

Page 36: Gradle入門

プロジェクト作成直後

このようなかんじ

Page 37: Gradle入門

Jenkins との連携• Gradle と Jenkins の連携もすることが可能です

• 時間がかかるので簡単な紹介のみとします

使用しているプラグイン :Gradle Plugin

Page 38: Gradle入門

Jenkins 側設定例

Page 39: Gradle入門
Page 40: Gradle入門

私は Gradle ・ GitBucket ・ Jenkins を使って

1.IDE から GitBucket のリポジトリに push

2.Jenkins が変更を検知してリポジトリを clone

3.test の実行

4.jar 生成

5. 設定ファイルから名前とバージョンを取得して jar をリネーム

6.javadoc を生成

7. ビルドした jar と javadoc をアップロード

までの処理を自動化しています

Page 41: Gradle入門

Gradle is GOD

• 面倒なところは Gradle に押し付ける!

• 紹介したように手順を自動化すればコード書くことだけに集中できる!

• チーム開発でも、開発環境の統一が簡単になる!

• IDE やその他ツールと合わせることで便利さが更に加速!

 積極的に楽していこう!

Page 42: Gradle入門

ありがとうございました