SlideShare ist ein Scribd-Unternehmen logo
1 von 42
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やその他ツールと合わせることで便利さが更に加速!
積極的に楽していこう!
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 
「情報」を「書く」ということ(仮) #RedmineJapan
 「情報」を「書く」ということ(仮)  #RedmineJapan 「情報」を「書く」ということ(仮)  #RedmineJapan
「情報」を「書く」ということ(仮) #RedmineJapanKazuhito Miura
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話KEISUKE KONISHI
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangYoshiki Shibukawa
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなすonozaty
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割Recruit Lifestyle Co., Ltd.
 
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピングAWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピングTakuro Sasaki
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring土岐 孝平
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢ytanno
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話disc99_
 
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawaクリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawaShohei Okada
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Shingo Kitayama
 
クラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよねクラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよねYoshioSawada
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 

Was ist angesagt? (20)

20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
「情報」を「書く」ということ(仮) #RedmineJapan
 「情報」を「書く」ということ(仮)  #RedmineJapan 「情報」を「書く」ということ(仮)  #RedmineJapan
「情報」を「書く」ということ(仮) #RedmineJapan
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
 
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピングAWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
 
AWS Lambdaを紐解く
AWS Lambdaを紐解くAWS Lambdaを紐解く
AWS Lambdaを紐解く
 
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawaクリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
クラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよねクラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよね
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
JIRAを使ったフツウのPJ実践
JIRAを使ったフツウのPJ実践JIRAを使ったフツウのPJ実践
JIRAを使ったフツウのPJ実践
 

Ähnlich wie 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
 

Ähnlich wie 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入門