SlideShare a Scribd company logo
1 of 42
Download to read offline
Gradle入門
今日から始めるビルドツール
@orekyuu
ビルドツールってなんだ
• 名前の通りビルドを行うツール
• 例としてはAntやMavenなどがある Gradleもビルドツールの一つ
Maven
pom.xmlにビルド手順を記述して、コンパイル、テスト、Javadoc生成
などをサポートする。
しかし・・・
pom.xmlを書くのが非常に大変・・・
このpom.xmlを書く人達をpom職人と呼ぶこともあるほど。
pom力たったの5か。雑魚め。
Gradle
• MavenのようなXMLで設定ファイルを書くのではなく、Groovyと呼ばれ
る言語で手順を記述
• Gradle Wrapperを使うことでチーム開発が容易に行える
で、Gradleで何ができるの?
• 自動的に必要なライブラリのダウンロード
• 開発環境の生成
• 必要に応じてやりたいことを自分でかける!
Gradleの開発環境を作る
• http://www.gradle.org/からGradleをダウンロード
• 解凍して適当なフォルダに置く
• gradle_root/bin/にパスを通しておしまい
• ターミナルでgradle –vを実行して確認
Javaプロジェクトを作る
• Workspaceフォルダを作成
• gradle init –-type java-libraryをターミナルで実行
Gradleのプロジェクト構成
• srcフォルダはこのようなディレクトリにする
• src/main/java/ javaファイルを入れる
src/main/resources/ リソースを配置
src/test/java/ テスト用のjavaファイル
src/test/resources/ テスト用リソース
src/main/javaフォルダにHello.javaを配置
Hello.javaの内容は
class Hello {
public static void main(String[] args) {
System.out.println(“Hello”);
}
}
ビルドしてみる
• ワークススペース直下でgradle buildを実行
完成品を確認
build/libs/にjarファイルが作成される
build/classes/にクラスファイルが作られる
ライブラリを追加してみる
googleのguavaを追加してみる
build.gradleを編集する
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.guava:guava:11.0.2'
}
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
ライブラリへのパスが通り、無事ビルドが成功しました。
このように手動で必要なライブラリをダウンロードすること無く利用することが
できます。
次にJUnitを使ったテストを書いてみましょう
Sampleクラスを作成
Sample.java
public class Sample {
public String getString() {
return “Sample”;
}
}
テストクラスを作成
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());
}
}
JUnitをテスト用のライブラリとして追加
dependenciesの中に以下を追加
testCompile group: 'junit', name: 'junit', version: '4.11‘
gradle testを実行
今回の例ではテストが通りますが、失敗のパターンを見ておくのもよいかも
基本は分かった そろそろチーム開発をしよう
チーム全員にGradleを入れてもらうのは面倒
そこでGradle Wrapperを使用する
Wrapper作成にはwrapperタスクを実行する
↓ターミナルで実行
gralde wrapper
Javaプロジェクト作成時にwrapperタスクも実行されるので今回は不要
gradle warapperのファイル
gradlew
gradlew.bat
gradle/wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
Gitなどのバージョン管理システムを使う場合はこれらを格納する。
GradleWrapperでビルド
ラッパーを使用する場合はgradleではなく、gradlewコマンドを使用する
gradlew buildを実行してみます
初回実行時のみGradleをダウンロードしてきます
デフォルトのタスクだとやりたいことできないんだけど
• Groovyを使ってタスクを定義することが可能
• スクリプト言語なので非常に書きやすい
タスクの定義方法
タスク定義の方法
task タスク名 {
doLast {
処理
}
}
Hello World
task hello {
doLast {
println ‘Hello World’
}
}
gradle helloを実行してHelloWorldが出力されればOK
省略記法
task hello << {
println ‘Hello World’
}
上のようにdoLastを省略することが可能
変数宣言
型 変数名 = 初期値
int a = 4
型にdefを使用することで型を指定せず宣言することができる
//動きます
def a = 1
a = ‘str’
if - else if – else
if (条件) {
hoge
} else if(条件) {
huge
} else {
hage
}
while
while (条件) {
処理
}
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)
リスト操作
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]//リストから削除
よく使うプロパティ
タスク名 プロパティ名 用途
compileJava
compileTestJava
options
エンコーディングとかコンパイルオプ
ションとか
jar archiveName jarファイル名を設定する時とか
Test
minHeapSize -Xmsを設定
maxHeapSize -Xmxを設定
jvmArgs jvm引数を与える
- sourceCompatibility コンパイル時のJavaバージョン
- targetCompatibility クラス生成時のJavaバージョン
Gradleとの連携
GradleとIntelliJ IDEA
• IntelliJ IDEAはJet Brains社が出しているJavaのIDE
• 高度で軽いコード補完やバージョン管理ツールとの連携が強い
• Gradleとの連携がサポートされている神IDE!!!
IDEAの場合・・・
Gradleプロジェクトを選択して
プロジェクトの名前をつけると完成
タスク表示機能
タスクの表示機能が備わっている。
右クリックからタスクを実行できる
ショートカットキーでも可
プロジェクト作成直後
このようなかんじ
Jenkinsとの連携
• GradleとJenkinsの連携もすることが可能です
• 時間がかかるので簡単な紹介のみとします
使用しているプラグイン:Gradle Plugin
Jenkins側設定例
私はGradle・GitBucket・Jenkinsを使って
1.IDEからGitBucketのリポジトリにpush
2.Jenkinsが変更を検知してリポジトリをclone
3.testの実行
4.jar生成
5.設定ファイルから名前とバージョンを取得してjarをリネーム
6.javadocを生成
7.ビルドしたjarとjavadocをアップロード
までの処理を自動化しています
Gradle is GOD
• 面倒なところはGradleに押し付ける!
• 紹介したように手順を自動化すればコード書くことだけに集中できる!
• チーム開発でも、開発環境の統一が簡単になる!
• IDEやその他ツールと合わせることで便利さが更に加速!
積極的に楽していこう!
ありがとうございました

More Related Content

What's hot

基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode ContractsYoshifumi Kawai
 
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボAI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボTakashi Yoshinaga
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014JWORKS powered by Ordina
 
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法Yoshifumi Kawai
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
Java仮想マシンの実装技術
Java仮想マシンの実装技術Java仮想マシンの実装技術
Java仮想マシンの実装技術Kiyokuni Kawachiya
 
PHPでマルチスレッド
PHPでマルチスレッドPHPでマルチスレッド
PHPでマルチスレッドkarky7
 
NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가
NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가
NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가NAVER Engineering
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則bonjin6770 Kurosawa
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門Asami Abe
 
REST API testing with SpecFlow
REST API testing with SpecFlowREST API testing with SpecFlow
REST API testing with SpecFlowAiste Stikliute
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」Hiroyuki Ohnaka
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향Young-Ho Cho
 
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門Toshiaki Maki
 
Handle Exceptions in Selenium Webdriver | Edureka
Handle Exceptions in Selenium Webdriver | EdurekaHandle Exceptions in Selenium Webdriver | Edureka
Handle Exceptions in Selenium Webdriver | EdurekaEdureka!
 

What's hot (20)

基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode Contracts
 
xUnit
xUnitxUnit
xUnit
 
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボAI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014
 
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
Java仮想マシンの実装技術
Java仮想マシンの実装技術Java仮想マシンの実装技術
Java仮想マシンの実装技術
 
PHPでマルチスレッド
PHPでマルチスレッドPHPでマルチスレッド
PHPでマルチスレッド
 
NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가
NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가
NAVER TECH CONCERT_FE2019_오늘부터 나도 FE 성능분석가
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
 
REST API testing with SpecFlow
REST API testing with SpecFlowREST API testing with SpecFlow
REST API testing with SpecFlow
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門
 
Handle Exceptions in Selenium Webdriver | Edureka
Handle Exceptions in Selenium Webdriver | EdurekaHandle Exceptions in Selenium Webdriver | Edureka
Handle Exceptions in Selenium Webdriver | Edureka
 

Similar to Gradle入門

AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~Yabata Tomomitsu
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座都元ダイスケ Miyamoto
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おうhirooooo
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねNaoto TAKAHASHI
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!Takuya Sato
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)masanori kataoka
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
明快!Drupal の強みと弱み
明快!Drupal の強みと弱み明快!Drupal の強みと弱み
明快!Drupal の強みと弱みMasahiro Nishio
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成ssuser331f24
 
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境Tatsuya Sakai
 
What's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App PlatformWhat's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App Platform惠 紀野
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_opsume3_
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
3グーグルドキュメントの使い方2
3グーグルドキュメントの使い方23グーグルドキュメントの使い方2
3グーグルドキュメントの使い方2Hati Miura
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleamayaw9
 

Similar to Gradle入門 (20)

AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう
 
Google Product
Google ProductGoogle Product
Google Product
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
明快!Drupal の強みと弱み
明快!Drupal の強みと弱み明快!Drupal の強みと弱み
明快!Drupal の強みと弱み
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成
 
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境
 
What's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App PlatformWhat's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App Platform
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
3グーグルドキュメントの使い方2
3グーグルドキュメントの使い方23グーグルドキュメントの使い方2
3グーグルドキュメントの使い方2
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
 

Gradle入門