SlideShare une entreprise Scribd logo
1  sur  109
Télécharger pour lire hors ligne
今日から始める
入門ハンズオン
2015.08.28 Spring in Summer
R3-2 #jsug_sis #jggug
受講対象者
• これからGradleを始める予定の人
• Gradleを始めたばかりの人
• Gradleに興味がある人
• pom地獄から脱出したい人
Gradle初心者向けの内容となっています。
それなりに使っている方は、今からでも
裏セッションに移動することをお勧めします。
アジェンダ
• イントロダクション
• 超速Gradle入門
• ハンズオン
• Q&A
イントロダクション
ハンズオン資料のコピー
• USBを前から回しています。以下をマ
シンにコピーし、Gradle-Hands-on/
README.txt を読んでセットアップ
を行ってください。
• [必須]:Gradle-Hands-on
• [任意]:JDK8-<OS-xxbit>
• JDKインストールしていない人のみ
自己紹介
• 綿引 琢磨(わたびき たくま)
• 株式会社デライトテクノロジーズ 代表取締役
• JGGUG運営委員
• @bikisuke
• 共著『Gradle徹底入門』
「徹底入門」というタイトルにふさわしい内容
http://www.amazon.co.jp/product-reviews/4798136433/ref=dp_db_cm_cr_acr_txt?ie=UTF8&showViewpoints=1
これまで手厚くサポートされたビルドツールの本を
見たことがありませんでした。
http://grimrose.blogspot.jp/2014/12/gradle.html
これ1冊あればググる必要ないのでは
という安心感がある
http://booklog.jp/item/1/4798136433
Gradle”
感じる徹底ぶりで、一読の価値ありです。
http://lino.hatenablog.jp/entry/gradleintroduction
「入門」とあるけど、きちんとアーキテクチャから解説
されているので、十分な知識が得られるだろう。
http://www.ruimo.com/2015/01/12/1421066460000.html
内容が濃い
http://www.amazon.co.jp/review/R1UIVFAYX4GEVR/
ref=cm_cr_dp_title?
ie=UTF8&ASIN=4798136433&channel=detail-
glance&nodeID=465392&store=books
絶賛発売中
会場後ろにて
アンケート1
• Q. 現在、何でビルドしていますか?
1. Antでビルドしている
2. Mavenでビルドしている
3. eclipseがやってくれてます
4. もちろん javac です
5. その他
アンケート2
• Q. Gradleへの移行を検討していますか?
1. すぐに移行する予定
2. 移行に不安があり、決め兼ねている
3. 今日のハンズオン次第で考えたい
4. 今のところ予定はない
5. XMLが大好物なのでありえない
アンケート3
• Q. Gradleへの移行の障壁は何ですか?
1. お客様や上司の説得
2. 社内にデキるエンジニアがいない
3. 今のビルドスクリプトが難解
4. 漠然とした不安感
5. その他
超速Gradle入門
Gradleとは
• OSSの自動化ツール(Apache License 2.0)
• 他のツールより優れている(点が多い)
• ビルドスクリプトはGroovy DSLで記述
• 拡張しやすいアーキテクチャを採用
• 最新バージョンは2.6(2015年8月時点)
主な特徴
• ビルドスクリプトが簡潔かつ柔軟
• プラグインを作りやすい
• マルチプロジェクトを扱いやすい
• 既存ビルドツールの資産を活用できる
• さまざまな言語に対応
• Gradleラッパーが便利
簡潔さと柔軟さ
• 実行単位の「タスク」を柔軟に記述
• 既存タスクの拡張も可能
• Groovy DSLで記述することで実現
• XMLではあり得ない簡潔さ
• ビルドスクリプトの記述はGroovyのコードと
して実行される
• Javaのコードを直接書くことも可能
柔軟な記述
task hello << {
println ‘Hello, Gradle’
}
タスクの定義
柔軟な記述
task hello << {
println new Messenger().greet(‘Gradle’)
}
public class Messenger {
private String message = “Hello,“;
public String greet(String name) {
return message + name + “!”;
}
}
スクリプト内でクラスを
定義することも可能
作りやすいプラグイン
• プラグイン作成の敷居が低い
• 用途に応じてプラグインも柔軟に
• ビルドスクリプトに直接
• buildSrcプロジェクトとして
• プラグインモジュールとして
マルチプロジェクト
• 設定スクリプトでプロジェクト管理
• 2つのレイアウトをサポート
• 階層型レイアウト
• フラット型レイアウト
• ビルド定義の記述場所も柔軟に
既存ツールの資産活用
• Ant
• build.xmlを実行可能
• Maven/Ivy
• MavenやIvyのリポジトリを利用可能
マルチ言語対応
• JVM
• Java, Groovy, Scala
• Android
• Android Studio のビルドツールとして採用
• Native
• C, C++, Objective-C, など
• その他
• C#(コミュニティプラグイン)など
Gradleラッパー
• ユーザーによる明示的なインストールや
設定をせずにビルド実行を可能に
• 一元的な実行環境の管理と配布により、
さまざまな用途に利用可能
• 独自設定を施したGradleの展開
• ツールの実行ランチャーとして
はじめてのGradle
• 基本の3ステップ
• Gradleのインストール
• ビルドスクリプトの作成
• ビルドの実行
Gradleのインストール
• 前提条件: JDK6以上(JDK8推奨)
• Mac/Unix系:GVMが便利
•http://gvmtool.net/
•$ gvm i gradle
• Windows: 公式サイトからダウンロード
•http://www.gradle.org/downloads
•ZIP解凍して、環境変数Pathに<GRADLE_HOME>bin
GVMによるインストール
$ gvm i gradle
Downloading: gradle 2.6
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 354 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
100 62.4M 100 62.4M 0 0 3495k 0 0:00:18 0:00:18 --:--:-- 4370k
Installing: gradle 2.6
Done installing!
Do you want gradle 2.6 to be set as default? (Y/n): Y
Setting gradle 2.6 as default.
ビルドスクリプトの作成
• 「build.gradle」というファイルをプロジェクト
直下に作成し、各種定義を記述
• プラグイン
• コンフィグレーション
• 依存関係解決
• タスク
• etc.
ビルドの実行
• gradleコマンドに実行したいタスクを指定
• gradle <タスク> ...
• コマンドライン引数でログレベル変更可能
• -i : info
• -q : quiet
• -d : debug
• -s : stacktrace
ハンズオン
#0: ウォーミングアップ
#0 動作確認
1. 環境準備(終わってない方)
2. バージョン情報の表示
3. タスク一覧の表示
環境準備
• JDKを入れていない人はJDKインストールと環境変
数の設定をしてください。
• Gradleは任意の場所に格納し、環境変数を設定して
ください。
• 新しくコマンドシェルまたはコマンドプロンプトを開
いてください。
• 「repository-manager」ディレクトリに移動し、
「gradle setupRepos」を実行してください。
バージョン情報の表示
• バージョン情報を表示するには以下のオプ
ションを指定して、Gradleを実行します。
‣ gradle -v (もしくは --version)
• Gradleのバージョンの他、GroovyやAnt,
JVM, OS などの情報が出力されているこ
とを確認してください。
タスク一覧の表示
• タスク一覧を表示するには以下のGradleタ
スクを実行します。
‣ gradle tasks
• 実行可能なタスクの一覧一覧が表示される
ことを確認してください。
#0 補足説明
#0-2 タスク一覧の表示
•Gradle には、予め使用可能なタスクが用意
されています。これらは「組み込みタスク
(built-in task)」呼びます。
•タスクは所属するグループ別に一覧表示され、
説明(description)が設定されている場合
には説明も表示されます。
•ビルドスクリプトで定義したタスクや使用す
るプラグインに含まれるタスクもこのタスク
一覧に表示されます。
#1: はじめてのGradle
#1-1 プロジェクトの作成とビルド
1. ディレクトリの移動
2. initタスクの実行
3. build.gradleの修正
4. ビルドの実行
5. ビルド成果物の確認
ディレクトリの移動
• <HANDS-ON_HOME>/work1/create-
and-buildに移動します。
• ディレクトリ内に何もファイルがないこと
を確認してください。
initタスクの実行
• 組み込みタスクであるinitタスクを以下の
タスクオプションを指定して実行します。
‣ gradle init --type java-library
• 「BUILD SUCCESSFUL」となることを
確認してください。
• ファイルやディレクトリが自動生成されて
いることを確認してください。
build.gradleの修正
• テキストエディタでbuild.gradleを開き、
以下の修正を行います。
‣ 17行目 jcenter() をコメントアウト
‣ 18行目 mavenLocal() を追加
ビルドの実行
• buildタスクを実行します。
‣ gradle build
• 「BUILD SUCCESSFUL」となることを
確認してください。
ビルド成果物の確認
• <HANDS-ON_HOME>/work1/create-and-
build/buildに移動し、以下のディレクトリの
ファイルを確認します。
• libs
• reports
• ディレクトリ内に何もファイルがないことを確認
してください。
#1-1 補足説明
#1-1-2 initタスク
•組み込みタスクのひとつ
•プロジェクトやビルドスクリプトの自動生成を行う
•生成したい内容に応じてタスクオプションを指定する
•basic : ビルドスクリプト、Gradleラッパー生成
•groovy-library : basic + Groovy規約ディレクトリ生成
•java-library : basic + Java規約ディレクトリ生成
•pom : pom.xmlを基に生成
•scala-library : basic + Scala規約ディレクトリ生成
#1-1-3 repositoriesの修正
•「repositories」には、依存関係を解決する際に参
照するリポジトリの設定を行います。
•外部のリポジトリを参照する場合は以下のように指定
します。
•mavenCentral() // Mavenセントラル
•jcenter() // initタスクのデフォルト
•本タスクでは、今回ネットワーク未接続の環境のため、
ローカルのファイルリポジトリを参照するように修正
しましたが、ネットワークがあれば修正は不要です。
#1-1-5 ビルド成果物の確認
•ビルドの実行により作成された成果物は、
<PROJECT_HOME>/buildディレクトリに置かれます。
•build/classes : main及びtestのクラスファイル
•build/libs : JARファイルやWARファイル等
•build/reports : テスト結果を集計したHTMLファイル
•build/resources : main及びtestのリソースファイル
•build/test-results : テスト結果
#1-2 既存プロジェクトへの適用
1. ディレクトリの移動
2. initタスクの実行
3. build.gradleの修正
4. ビルドの実行
5. WARファイルのデプロイ
6. アプリの動作確認
ディレクトリの移動
• <HANDS-ON_HOME>/work1/migrate-
from-mavenに移動します。
• ディレクトリ内にsrcとpom.xmlファイル
があることを確認してください。
initタスクの実行
• initタスクをタスクオプションなしで実行し
ます。
‣ gradle init
• 「BUILD SUCCESSFUL」となることを
確認してください。
• ビルドスクリプやGradleラッパーが自動生
成されていることを確認してください。
build.gradleの修正
• テキストエディタでbuild.gradleを開き、以下の修正を行います。
‣ 1行目 apply plugin ‘java’ をコメントアウト
‣ 2行目 apply plugin ‘war’ を追加
‣ 10,11行目 「1.5」を「1.8」に変更
‣ 17行目 maven {} をコメントアウト
‣ 18行目 mavenLocal() を追加
‣ 23行目に war { を追加
‣ 24行目に baseName = ‘helloApp’ を追加
‣ 25行目に version = ‘’ を追加
‣ 26行目に } を追加
ビルドの実行
• buildタスクを実行します。
‣ gradle build
• 「BUILD SUCCESSFUL」となることを
確認してください。
• build/libsディレクトリにWARファイルが
作成されることを確認してください。
WARファイルのデプロイ
• 作成したhelloApp.warをTomcatにコピー
します。
• cd build/libs/helloApp.war
<HANDS-ON_HOME>/tomcat/
webapps/
• tomcat/webapps直下にWARファイルが
コピーされていることを確認してください。
アプリの動作確認
• Tomcatを起動し、ブラウザから以下のアドレス
にアクセスします。
• Tomcatの起動シェル:

tomcat/bin/start.sh(start.bat)
• http://localhost:8080/helloApp/
• ブラウザに「Hello!!!!」と表示されることを確認
してください。
#1-2 補足説明
#1-2-2 initタスク
•コマンドを実行する場所にpom.xmlが存在す
る場合は、タスクオプションなしで「--type
pom」と同様の自動生成を行います。
•pomベースで生成される場合は、対応可能な
定義のみpom.xmlの内容を変換して
build.gradleに反映されます。
#1-2-3 build.gradleの修正
•GradleはMavenのディレクトリ規約を踏襲
しているため、変更することなく、そのまま適
用できます。
•pom.xmlの<packaging>の内容は反映され
ないため、JAR以外の場合はプラグインを変
更する必要があります。
•Mavenのprovidedスコープは、Gradleでは
Warプラグインの設定のため、Javaプラグイ
ンでは使用することができません。
#2: プラグインの使い方
プラグインとは
• Gradleのビルド機能を拡張する仕組み
• ほとんどの機能はプラグインによって提供されている
• 通常、プラグインによって「タスク」「プロパティ」
「規約」などが追加される
• Gradleのプラグインは主に3種類に分類される
• 標準プラグイン
• コミュニティプラグイン
• カスタムプラグイン
プラグインの記述
// 従来の記述方法
apply plugin: ‘<プラグインID>’
// Gradle2.1からの記述方法
plugins {
id ‘<プラグインID>’
}
標準プラグイン
カテゴリ プラグイン名 プラグインID 概要
言語 Javaプラグイン java
Javaプロジェクトのビ
ルド機能
言語 Groovyプラグイン groovy
Groovyプロジェクトの
ビルド機能
統合 Applicationプラグイン application
Javaプロジェクトのビルド
とコマンドライン実行機能
統合 Warプラグイン war
Javaプロジェクトのビルド
とWARファイル生成機能
開発 Checkstyleプラグイン checkstyle
Javaソースの静的解析
とレポート出力機能
開発 PMDプラグイン pmd
Javaソースの静的解析
とレポート出力機能
コミュニティプラグイン
カテゴリ プラグイン名 プラグインID 概要
統合 Tomcatプラグイン com.bmuschko.tomcat
組み込みTomcatの起動
停止やデプロイ機能
言語 SSHプラグイン org.hidetake.ssh
SSHによるコマンド実
行やファイル転送機能
統合 Bintrayプラグイン com.jfrog.bintray
Bintrayへのアーティフ
ァクト発行機能
統合
Spring-Boot
プラグイン
spring-boot Spring-boot実行機能
カスタムプラグイン
apply plugin: HelloPlugin
class HelloPlugin implements Plugin<Project> {
void apply(Project project) {
project.task(‘hello’) << {
println ‘Hello, Gradle!’
}
}
}
#2-1 Javaプラグイン
1. ディレクトリの移動
2. タスク詳細の確認
3. タスクの実行と確認
ディレクトリの移動
• <HANDS-ON_HOME>/work2/java-
pluginに移動します。
• ディレクトリ内にsrcとbuild.gradleファ
イルがあることを確認してください。
タスク詳細の確認
• タスク一覧およびヘルプを表示して、タス
クの詳細情報を確認します。
‣ gradle tasks --all
‣ gradle help --task <タスク>
• タスクの定義方法のスライドを参考に定義
してください。
タスクの実行と確認
• 定義したタスクを実行します。
‣ gradle <タスク名>
• 「BUILD SUCCESSFUL」となることを
確認してください。
• 期待通りの結果が出力されていることを確
認してください。
#2-2 Warプラグイン
1. ディレクトリの移動
2. タスク詳細の確認
3. タスクの実行と確認
ディレクトリの移動
• <HANDS-ON_HOME>/work2/war-
pluginに移動します。
• ディレクトリ内にsrcとbuild.gradleファ
イルがあることを確認してください。
タスク詳細の確認
• タスク一覧およびヘルプを表示して、タス
クの詳細情報を確認します。
‣ gradle tasks --all
‣ gradle help --task <タスク>
• タスクの定義方法のスライドを参考に定義
してください。
タスクの実行と確認
• 定義したタスクを実行します。
‣ gradle <タスク名>
• 「BUILD SUCCESSFUL」となることを
確認してください。
• 期待通りの結果が出力されていることを確
認してください。
#2-3 Applicationプラグイン
1. ディレクトリの移動
2. タスク詳細の確認
3. タスクの実行と確認
ディレクトリの移動
• <HANDS-ON_HOME>/work2/app-
pluginに移動します。
• ディレクトリ内にsrcとbuild.gradleファ
イルがあることを確認してください。
タスク詳細の確認
• タスク一覧およびヘルプを表示して、タス
クの詳細情報を確認します。
‣ gradle tasks --all
‣ gradle help --task <タスク>
• タスクの定義方法のスライドを参考に定義
してください。
タスクの実行と確認
• 定義したタスクを実行します。
‣ gradle <タスク名>
• 「BUILD SUCCESSFUL」となることを
確認してください。
• 期待通りの結果が出力されていることを確
認してください。
#3: タスクの定義
タスクとは
• Gradleで実行する処理の単位
• 内部的には「actions」というプロパ
ティで実行処理を管理している
• タスク間に依存関係を持たせたり、実行順
を制御したりすることが可能
タスクの定義方法
// 最もシンプルな記法
task <タスク名> << {
// タスク処理
}
// 例
task hello << {
println ‘Hello, Gradle!’
}
タスクの定義方法
// 前と似ているが異なる記法
task <タスク名> {
// タスクの設定
<タスクAPI> { // タスクの処理 }
}
// 例
task hello {
description = ‘helloタスクです’
doLast { println ‘Hello, Gradle!’ }
}
タスクの定義方法
// Gradle標準の汎用タスクを使用した記法
task <タスク名>(type: <汎用タスク>) {
// タスク処理
}
// 例
task myDelete (type: Delete) {
delete ‘trash/files’
}
#3-1 タスクの作成
1. ディレクトリの移動
2. タスクの定義
3. タスクの実行と確認
ディレクトリの移動
• <HANDS-ON_HOME>/work3/task-
definitionsに移動します。
• ディレクトリ内にbuild.gradleファイルが
あることを確認してください。
タスクの定義
• build.gradleをエディタで開き、コメント
に従って、各タスクを定義します。
‣ コメント参照
• タスクの定義方法のスライドを参考に定義
してください。
タスクの実行と確認
• 定義したタスクを実行します。
‣ gradle <タスク名>
• 「BUILD SUCCESSFUL」となることを
確認してください。
• 期待通りの結果が出力されていることを確
認してください。
#3-1: 回答例
/**
* 3-1-1. 「Hello, Gradle!」と出力するHelloタスクを作成してください。
* 出力には「println '文字列'」が使えます。
*/
task Hello << {
println 'Hello, Gradle!'
}
/**
* 3-1-2. 3-1-1で作成した「Helloタスク」と同じ処理をdoLastを使った
*「Hello2タスク」として作成してください。
*/
task Hello2 {
doLast {
println 'Hello, Gradle!'
}
build.gradle(1/2)
/**
* 3-1-3. 「from/resource.txt」を「to」ディレクトリにコピーしてください。
* ファイルのコピーには Copyタスクを使用できます。
* task xxx(type: Copy) {
* from 'コピー元'
* into 'コピー先'
* }
*/
task myCopy(type: Copy) {
from 'from/resource.txt'
into 'to'
}
build.gradle(2/2)
タスクの制御
• 依存関係
• 依存するタスクがある場合、実行時に依存関係を って各
タスクを実行する
• 順序付け
• 順序付けされているタスクが、同時に実行タスクとして指
定された場合は、順序に従って各タスクを実行する
• ファイナライザータスク
• ファイナライズドタスクが実行タスクとして指定された場
合、最後にファイナライザータスクを実行する
依存関係の定義方法
task TASK_A << {
// タスク処理
}
task TASK_B << {
// タスク処理
}
// TASK_B は TASK_A に依存している
TASK_B.dependsOn TASK_A
順序付けの定義方法
task TASK_A << {
// タスク処理
}
task TASK_B << {
// タスク処理
}
// TASK_B は TASK_Aの後に実行される
TASK_B.mustRunAfter TASK_A
TASK_B.shouldRunAfter TASK_A
ファイナライザーの定義方法
task TASK_A << {
// タスク処理
}
task TASK_B << {
// タスク処理
}
// TASK_A のファイナライザータスクとして TASK_Bを定義
TASK_A.finalizedBy TASK_B
#3-2 タスクの制御
1. ディレクトリの移動
2. タスクの定義
3. タスクの実行と確認
ディレクトリの移動
• <HANDS-ON_HOME>/work3/
ordering-tasksに移動します。
• ディレクトリ内にbuild.gradleファイルが
あることを確認してください。
タスクの定義
• build.gradleをエディタで開き、コメント
に従って、各タスクを定義します。
‣ コメント参照
• タスクの定義方法のスライドを参考に定義
してください。
タスクの実行と確認
• 定義したタスクを実行します。
‣ gradle <タスク名>
• 「BUILD SUCCESSFUL」となることを
確認してください。
• 期待通りの結果が出力されていることを確
認してください。
#3-2: 回答例
/**
* 3-2-1. 「TODO」「DOING」「DONE」と出力するToDoタスク、Doingタスク、Doneタ
スクを作成してください。
*/
task ToDo << { println ‘TODO' }
task Doing << { println 'DOING'}
task Done << { println ‘DONE' }
/**
* 3-2-2.ToDoタスク、Doingタスク、Doneタスクに依存関係を持たせて、
*「TODO」「DOING」「DONE」の順に出力させてください。
*/
//Done.dependsOn Doing
//Doing.dependsOn ToDo
build.gradle(1/2)
/**
* 3-2-3. 「mustRunAfter」もしくは「shouldRunAfter」を使用して
*「TODO」「DOING」「DONE」の順に出力させてください。
*/
Done.mustRunAfter Doing
Doing.mustRunAfter ToDo
/**
* 3-2-4. 「ALL TASK FINISHED」と出力するFinishedタスクを追加し、
* Doneタスクのファイナライザータスクとして定義してください。
*/
task Finished << {
println 'ALL TASK FINISHED'
}
Done.finalizedBy Finished
build.gradle(2/2)
#4: 応用編
#4 アプリ起動の自動化
1. ディレクトリの移動
2. ビルドスクリプトの作成
3. タスクの定義
4. タスクの実行と確認
5. アプリの動作確認
ディレクトリの移動
• <HANDS-ON_HOME>/work4/new-
webappに移動します。
• ディレクトリ内にsrcとpom.xmlファイル
があることを確認してください。
タスクの定義
• build.gradleをエディタで開き、次のタスク
を定義します。
‣ WARファイルをtomcat/webappsにコ
ピーするタスク
‣ Tomcatを起動させるタスク
• Tomcat起動タスクが必ずWARコピータスク
の後で実行されるように順序付けしてください。
タスクの実行と確認
• 定義したタスクを実行します。
‣ gradle deployWar startTomcat
• タスク実行前にTomcatが起動していたら、
shutdown.sh(bat)で停止してください。
• 「BUILD SUCCESSFUL」となることを確認
してください。
• 期待通りの結果になることを確認してください。
アプリの動作確認
• ブラウザから以下のアドレスにアクセスし
ます。
• http://localhost:8080/helloApp/
• ブラウザに「Hello!!!!」と表示されること
を確認してください。
#4: 回答例
apply plugin: 'war'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenLocal()
}
dependencies {
compile group: 'org.springframework', name: 'spring-webmvc',
version:'4.1.7.RELEASE'
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version:'3.0.1'
}
build.gradle(1/2)
war {
baseName = 'helloApp'
version = ''
}
task deployWar(type: Copy) {
from 'build/libs/helloApp.war'
into '../../tomcat/webapps'
}
task startTomcat(type: Exec) {
workingDir '../../tomcat/bin'
commandLine 'cmd', '/c', 'startup.bat'
}
deployWar.dependsOn build
startTomcat.mustRunAfter deployWar
build.gradle(2/2)
Q&A
今日から始める
入門ハンズオン
2015.08.28 Spring in Summer
R3-2 #jsug_sis #jggug

Contenu connexe

Tendances

[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう
hirooooo
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
Takahisa Wada
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
Nobuhiro Sue
 
Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部
cactusman
 

Tendances (19)

Gradle handson
Gradle handsonGradle handson
Gradle handson
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
 
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
 
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
 
What makes Geb groovy?
What makes Geb groovy?What makes Geb groovy?
What makes Geb groovy?
 
Cryogenでサイトつくろーじぇん
CryogenでサイトつくろーじぇんCryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
 
Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部
 
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
 

Similaire à Spring in-summer-gradle-hands on-withanswers

Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
Nobuhiro Sue
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
Nobuhiro Sue
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
HommasSlide
 

Similaire à Spring in-summer-gradle-hands on-withanswers (20)

G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android Studio
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
Gradle再入門.pptx
Gradle再入門.pptxGradle再入門.pptx
Gradle再入門.pptx
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
Ppl
PplPpl
Ppl
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 

Plus de Takuma Watabiki

G*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIIIG*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIII
Takuma Watabiki
 

Plus de Takuma Watabiki (13)

「普通の設計」をするということ
「普通の設計」をするということ「普通の設計」をするということ
「普通の設計」をするということ
 
バックエンドのエンジニアがiOSアプリ開発をやってみて思うこと - フロントエンドのアーキテクチャの考察 -
バックエンドのエンジニアがiOSアプリ開発をやってみて思うこと - フロントエンドのアーキテクチャの考察 -バックエンドのエンジニアがiOSアプリ開発をやってみて思うこと - フロントエンドのアーキテクチャの考察 -
バックエンドのエンジニアがiOSアプリ開発をやってみて思うこと - フロントエンドのアーキテクチャの考察 -
 
『現場で役立つシステム設計の原則』は一般的なSI現場で役立つのか?
『現場で役立つシステム設計の原則』は一般的なSI現場で役立つのか?『現場で役立つシステム設計の原則』は一般的なSI現場で役立つのか?
『現場で役立つシステム設計の原則』は一般的なSI現場で役立つのか?
 
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
 
JGGUG Community LT 2016
JGGUG Community LT 2016JGGUG Community LT 2016
JGGUG Community LT 2016
 
Spock's world
Spock's worldSpock's world
Spock's world
 
スーパー戦隊進化論
スーパー戦隊進化論スーパー戦隊進化論
スーパー戦隊進化論
 
Gws in fukuoka
Gws in fukuokaGws in fukuoka
Gws in fukuoka
 
Devsumi2012 JGGUG LT
Devsumi2012 JGGUG LTDevsumi2012 JGGUG LT
Devsumi2012 JGGUG LT
 
Spockを使おう!
Spockを使おう!Spockを使おう!
Spockを使おう!
 
G*Magazineを読もう
G*Magazineを読もうG*Magazineを読もう
G*Magazineを読もう
 
G*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIIIG*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIII
 
Groovyノススメ
GroovyノススメGroovyノススメ
Groovyノススメ
 

Spring in-summer-gradle-hands on-withanswers