Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Nemoto Yusuke
10,339 views
Gradle handson
Gradleハンズオン資料
Technology
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Downloaded 10 times
1
/ 52
2
/ 52
3
/ 52
4
/ 52
5
/ 52
6
/ 52
7
/ 52
8
/ 52
9
/ 52
10
/ 52
11
/ 52
12
/ 52
13
/ 52
14
/ 52
15
/ 52
16
/ 52
17
/ 52
18
/ 52
19
/ 52
20
/ 52
21
/ 52
22
/ 52
23
/ 52
24
/ 52
25
/ 52
26
/ 52
27
/ 52
28
/ 52
29
/ 52
30
/ 52
31
/ 52
32
/ 52
33
/ 52
34
/ 52
35
/ 52
36
/ 52
37
/ 52
38
/ 52
39
/ 52
40
/ 52
41
/ 52
42
/ 52
43
/ 52
44
/ 52
45
/ 52
46
/ 52
47
/ 52
48
/ 52
49
/ 52
50
/ 52
51
/ 52
52
/ 52
More Related Content
PDF
Gradleどうでしょう
by
Takuma Watabiki
PDF
Gradle布教活動
by
Nemoto Yusuke
PPTX
Gradle入門
by
orekyuu
PDF
Spring in-summer-gradle-hands on-withanswers
by
Takuma Watabiki
PDF
Jjug 20140430 gradle_basic
by
Takuma Watabiki
PPTX
Jjug 20140430 gradle_advanced
by
Masatoshi Hayashi
PDF
OSS Product feat. Gradle
by
Yasuharu Nakano
PDF
Gws 20141024 gradle_intro
by
Nobuhiro Sue
Gradleどうでしょう
by
Takuma Watabiki
Gradle布教活動
by
Nemoto Yusuke
Gradle入門
by
orekyuu
Spring in-summer-gradle-hands on-withanswers
by
Takuma Watabiki
Jjug 20140430 gradle_basic
by
Takuma Watabiki
Jjug 20140430 gradle_advanced
by
Masatoshi Hayashi
OSS Product feat. Gradle
by
Yasuharu Nakano
Gws 20141024 gradle_intro
by
Nobuhiro Sue
What's hot
PDF
Android アプリ開発における Gradle ビルドシステム
by
Yu Nobuoka
PPTX
Jenkins と groovy
by
Kohsuke Kawaguchi
PDF
脱・独自改造! GebでWebDriverをもっとシンプルに
by
Hiroko Tamagawa
PDF
明日から使えるgradle
by
kimukou_26 Kimukou
PDF
高速!Clojure Web 開発入門
by
Kazuki Tsutsumi
PDF
クラウド時代だからSpring-Retryフレームワーク
by
Y Watanabe
PDF
AndroidStudioはじめました ~Gradle編~
by
Yabata Tomomitsu
PDF
JobStreamerではじめるJavaBatchのクラウド分散実行
by
Yoshitaka Kawashima
PDF
システム開発を前進させるためのGradle導入法
by
Takuma Watabiki
PDF
(IDEユーザのための) ClojureのEmacs開発環境について
by
Kazuhiro Hara
PDF
プログラミング言語Clojureのニャンパスでの活用事例
by
sohta
PDF
ClojureでElectronアプリを作ろう
by
Kazuhiro Hara
PDF
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
by
Yuta Matsumura
PPTX
[社内勉強会]Gradleを使おう
by
hirooooo
PDF
Introduction to Spock
by
Takahiro Sugiura
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
by
Y Watanabe
PDF
今すぐブラウザでES6を使おう
by
Hayashi Yuichi
PDF
Java web application testing
by
Tokuhiro Matsuno
PPT
第5回勉強会
by
Mugen Fujii
PDF
What makes Geb groovy?
by
Youtarou TAKAHASHI
Android アプリ開発における Gradle ビルドシステム
by
Yu Nobuoka
Jenkins と groovy
by
Kohsuke Kawaguchi
脱・独自改造! GebでWebDriverをもっとシンプルに
by
Hiroko Tamagawa
明日から使えるgradle
by
kimukou_26 Kimukou
高速!Clojure Web 開発入門
by
Kazuki Tsutsumi
クラウド時代だからSpring-Retryフレームワーク
by
Y Watanabe
AndroidStudioはじめました ~Gradle編~
by
Yabata Tomomitsu
JobStreamerではじめるJavaBatchのクラウド分散実行
by
Yoshitaka Kawashima
システム開発を前進させるためのGradle導入法
by
Takuma Watabiki
(IDEユーザのための) ClojureのEmacs開発環境について
by
Kazuhiro Hara
プログラミング言語Clojureのニャンパスでの活用事例
by
sohta
ClojureでElectronアプリを作ろう
by
Kazuhiro Hara
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
by
Yuta Matsumura
[社内勉強会]Gradleを使おう
by
hirooooo
Introduction to Spock
by
Takahiro Sugiura
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
by
Y Watanabe
今すぐブラウザでES6を使おう
by
Hayashi Yuichi
Java web application testing
by
Tokuhiro Matsuno
第5回勉強会
by
Mugen Fujii
What makes Geb groovy?
by
Youtarou TAKAHASHI
Viewers also liked
PDF
GradleのREPLプラグイン紹介 #jggug
by
kyon mm
PDF
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
by
Toshiaki Maki
PDF
Maven基礎
by
Toshio Takiguchi
PPTX
Spring boot劇的ビフォーアフター
by
orekyuu
PPTX
IdrisでWebアプリを書く
by
Hideyuki Tanaka
PDF
A Study of the Characteristics of Developers′ Activities in GitHub
by
奈良先端大 情報科学研究科
KEY
MySQLでNoSQL - アメーバピグでのNoSQLの実例
by
Kazuhiro Oinuma
PDF
Closures and methodMissing are real
by
Takahiro Sugiura
GradleのREPLプラグイン紹介 #jggug
by
kyon mm
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
by
Toshiaki Maki
Maven基礎
by
Toshio Takiguchi
Spring boot劇的ビフォーアフター
by
orekyuu
IdrisでWebアプリを書く
by
Hideyuki Tanaka
A Study of the Characteristics of Developers′ Activities in GitHub
by
奈良先端大 情報科学研究科
MySQLでNoSQL - アメーバピグでのNoSQLの実例
by
Kazuhiro Oinuma
Closures and methodMissing are real
by
Takahiro Sugiura
Similar to Gradle handson
PPTX
Jenkins x Kubernetesが簡単だと思ったら大変だった話
by
Masaki Yamamoto
PPT
Maven2 プラグイン入門
by
guestd4898b
PDF
Mavenへのはじめの一歩
by
祐理 大野
PDF
GradleによるG*なビルドシステムの構築
by
Masatoshi Hayashi
PDF
Gws 20120521 gradle
by
Nobuhiro Sue
PDF
Agileツール適合化分科会(構成管理・ビルドツール)
by
masanori kataoka
PDF
TDD勉強会キックオフ for Java
by
Yuta Kawadai
PDF
Gws 20130315 gradle_handson
by
Nobuhiro Sue
PDF
Groovy base gradle_20130309
by
Nobuhiro Sue
PPT
Maven2 plugin
by
Funato Takashi
PPT
Antのススメ
by
Tatsumi Naganuma
ODP
Nseg20120929
by
hiro345
PDF
Android studio で行ってみよう!!
by
Kazuaki Ueda
PDF
Android App Development with Gradle & Android Studio
by
Soichiro Kashima
PDF
Jenkins plugin memo
by
Kiyotaka Oku
PDF
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
by
Makoto Yamazaki
PDF
CIBC workshop by imagire
by
Takashi Imagire
PDF
Gradle a new Generation Build Tool
by
Shinya Mochida
PDF
Androidアプリ開発で活躍必至!? ビルドツールGradle
by
amayaw9
PDF
Jjug 20140430 gradle_intro
by
Nobuhiro Sue
Jenkins x Kubernetesが簡単だと思ったら大変だった話
by
Masaki Yamamoto
Maven2 プラグイン入門
by
guestd4898b
Mavenへのはじめの一歩
by
祐理 大野
GradleによるG*なビルドシステムの構築
by
Masatoshi Hayashi
Gws 20120521 gradle
by
Nobuhiro Sue
Agileツール適合化分科会(構成管理・ビルドツール)
by
masanori kataoka
TDD勉強会キックオフ for Java
by
Yuta Kawadai
Gws 20130315 gradle_handson
by
Nobuhiro Sue
Groovy base gradle_20130309
by
Nobuhiro Sue
Maven2 plugin
by
Funato Takashi
Antのススメ
by
Tatsumi Naganuma
Nseg20120929
by
hiro345
Android studio で行ってみよう!!
by
Kazuaki Ueda
Android App Development with Gradle & Android Studio
by
Soichiro Kashima
Jenkins plugin memo
by
Kiyotaka Oku
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
by
Makoto Yamazaki
CIBC workshop by imagire
by
Takashi Imagire
Gradle a new Generation Build Tool
by
Shinya Mochida
Androidアプリ開発で活躍必至!? ビルドツールGradle
by
amayaw9
Jjug 20140430 gradle_intro
by
Nobuhiro Sue
More from Nemoto Yusuke
PDF
実践プログラミング DSL
by
Nemoto Yusuke
PDF
社内勉強会 - 書籍管理Webシステム
by
Nemoto Yusuke
PDF
社内勉強会 - chef
by
Nemoto Yusuke
PDF
Scalaを触ってみた
by
Nemoto Yusuke
PDF
SVG事始め
by
Nemoto Yusuke
PDF
Mattermost Plugin Bounty Programについて
by
Nemoto Yusuke
PDF
Sinatra slideshare
by
Nemoto Yusuke
PDF
ブログる
by
Nemoto Yusuke
実践プログラミング DSL
by
Nemoto Yusuke
社内勉強会 - 書籍管理Webシステム
by
Nemoto Yusuke
社内勉強会 - chef
by
Nemoto Yusuke
Scalaを触ってみた
by
Nemoto Yusuke
SVG事始め
by
Nemoto Yusuke
Mattermost Plugin Bounty Programについて
by
Nemoto Yusuke
Sinatra slideshare
by
Nemoto Yusuke
ブログる
by
Nemoto Yusuke
Recently uploaded
PPTX
ddevについて .
by
iPride Co., Ltd.
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
Drupal Recipes 解説 .
by
iPride Co., Ltd.
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
ddevについて .
by
iPride Co., Ltd.
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
Drupal Recipes 解説 .
by
iPride Co., Ltd.
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Gradle handson
1.
Gradle勉強会
2.
アジェンダ • Gradle(ビルド自動化)の歴史 • Javaビルド •
Gradleプラグイン
3.
Gradleとは? • ビルド実行を自動化するためのツール • 従来のビルドツールの特徴を引き継ぎ、かつ記述 が簡単 •
Android / Spring / Hibernateなどの有名Javaプ ロジェクトの公式ビルドツールに採用されている
4.
Javaビルドの歴史
5.
ビルド自動化の歴史
6.
ソフトウェア開発(Java) コーディング コンパイル テスト パッケージング リリース プログラミング コンピュータが実行 しやすい形に 配布しやすい形に 実行できる形に
7.
ソフトウェア開発 - 自動化の歴史 コーディング コンパイル テスト パッケージング リリース テスト自動化 継続的インテグレーション 継続的デリバリー 自動化の領域が広がっている JUnit/TestNG/Spock Jenkins/CruiseControl/Circle
CI Chef/Puppet/Ansible
8.
ソフトウェア開発 - ビルドスクリプト コーディング コンパイル テスト パッケージング リリース bat
/ shell ant maven Gradle ※リリースされた時代背景のイメージであり、各ツールが 対応するタスクの自動化を想定している訳ではないです ビルドスクリプトも進化している
9.
ビルドスクリプトの歴史
10.
BAT / Shell •
コンピュータで出来ることならほぼ何でも出来る • 統一的な記述方法がない => 属人性が高くなる(ビルド職人) 2000 2004 2012
11.
Ant • 2000/7/19 Ant
1.1 リリース • Ant = Another Neat Tool • XMLによる宣言的な記述 => Neat: さっぱりした (NEETではない) => Tomcat のビルドツールとして開発された (参考) http://en.wikipedia.org/wiki/Apache_Ant#History http://ant.apache.org/faq.html#ant-name 2000 2004 2012 => XML地獄の始まり
12.
Maven • 2004/7/13 Maven
1.1 リリース (最新ver 3.2.1) • Maven Repository ! • Conversion Over Configuration (設定より規約) => 依存関係問題を成果物リポジトリに任せる => 規約通りに作ることで設定項目を減らす => Antでも依存関係解決のために ivy が作られる 2000 2004 2012 => しかし、XML地獄からは抜け出せず
13.
Gradle • 2012/6/12 Gradle
1.0 リリース • Groovy DSLによる簡潔な記述 • Mavenの思想(Repo, COC)を引き継ぐ • Ant/Mavenの設定ファイルをインポート可能 => Ant/Mavenと続いたXML地獄からの脱却 => 2014/7/1 Gradle 2.0 公開 2000 2004 2012 => 過去の資産を無駄にしない
14.
ビルドスクリプトの比較 apply plugin: 'java' group
= 'MavenSample' version = '1.0' artifactId = 'MavenSample' sourceCompatibility = 1.7 targetCompatibility = 1.7 def defaultEncoding = 'UTF-8' [compileJava, compileTestJava]*.options*.encoding = defaultEncoding repositories{ mavenCentral() } dependencies{ testCompile 'junit:junit:4.11' } <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>MavenSample</groupId> <artifactId>MavenSample</artifactId> <version>1.0</version> <properties> <project.build.sourceEncoding>utf-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project> Antでは ・ソース格納場所の指定 ・ビルドタスクの定義 ・依存関係解決は別ファイルに記述 などにより、maven以上の記述量になるため割愛 => http://d.hatena.ne.jp/kaakaa_hoe/20130312 2013-03-12 [Gradle] GradleとMavenとAnt+ivyの比較
15.
インストール
16.
必要要件 • JDK5以上 (Gradle2.0からはJDK6以上) =>
環境変数 JAVA_HOME で指定されたJavaを使う => Groovyのインストールは必要ない
17.
インストール • ダウンロード • 解凍 •
PATHを通す => http://www.gradle.org/downloads => 環境変数 GRADLE_HOME を作っておくとアップデートが楽
18.
Gradle wrapper 1. Gradle
Wrapper作成 => 第61章 Gradleラッパー http://gradle.monochromeroad.com/docs/userguide/gradle_wrapper.html • Gradle実行環境を作成するスクリプト => ビルド実行に必要なファイルを自動でダウンロードするスクリプトを生成 => チーム内でのGradleバージョン統一 / ビルドマシンでのGradleの使用 などに $ cat build.gradle task wrapper(type: Wrapper) { gradleVersion = '1.12' } ! $ gradle wrapper 2. Wrapper実行 $ gradlew build => Gradleの実行に必要なファイル群をDL (初回実行時は数分かかる) => ラッパースクリプトと、その実行に 必要なファイル群が生成される
19.
プロキシの設定 => MavenCentralからライブラリをダウンロードする使い方が一般的 • 社内からGradleを使用する時は必要 systemProp.proxySet=true systemProp.http.proxyHost=proxy.hogehoge.com systemProp.http.proxyPort=8080 systemProp.http.proxyUser=kaakaa systemProp.http.proxyPassword=pass systemProp.http.nonProxyHosts=127.0.0.1¦localhost =>
カレントかホームディレクトリに置いておくgradle.properties => Gradleでプロキシーの設定ってどうやるの? - みちしるべ http://orangeclover.hatenablog.com/entry/20111207/1323184826 => 第20章 ビルド環境 http://gradle.monochromeroad.com/docs/userguide/build_environment.html
20.
Javaビルド
21.
タスク定義の基本
22.
タスクの定義 task hello(description: sample
) << { println Hello Gradle! } build.gradle $ gradle hello ! :hello Hello Gradle! ! BUILD SUCCESSFUL ! Total time: 5.997 secs
23.
タスクの定義(依存関係) task hello <<
{ println Hello Gradle! } task greet << { println Bye Gradle! } ! greet.dependsOn hello build.gradle $ gradle greet -q Hello Gradle! Bye Gradle! quietオプション
24.
タスクの定義(色々なタスク) task myCopy(type: Copy){ from
resource into target include **/*.txt ! logger.quiet Copy .txt files } build.gradle $ gradle mC -q Copy .txt files 重複していなければ、タスク名の 頭文字でタスクを指定可能 デフォルトで使用できるロガー => 第15章 タスク詳解 http://gradle.monochromeroad.com/docs/userguide/more_about_tasks.html ファイルコピータスク
25.
タスクの確認 • 実行可能なタスクの確認コマンド $gradle tasks
-q ! ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ ! Build Setup tasks ----------------- init - Initializes a new Gradle build. [incubating] wrapper - Generates Gradle wrapper files. [incubating] ! Help tasks ---------- dependencies - Displays all dependencies declared in root project '03_task'. dependencyInsight - Displays the insight into a specific dependency in root project 03_task'. ! … ! Other tasks ----------- hello - sample task カレントディレクトリで 実行できるタスク一覧 自分で定義したタスクの 説明は description で していしたもの
26.
Javaビルド (基本)
27.
Javaビルド • Javaプラグインを使う • COCにより基本的なタスク・設定は存在する =>
ソースの格納場所はsrc/main/java. テストソースはsrc/test/java => jar / test / build などのデフォルトタスク => コンパイルやjar生成のタスクを記述しなくても良い(COC) Javaプラグインにより追加されるタスク群の依存関係
28.
Javaビルド • 初回は Build
Init Plugin が便利 => Chapter 47. Build Init Plugin http://gradle.monochromeroad.com/docs/userguide/build_init_plugin.html => 最小限のプロジェクトを自動生成してくれる $ gradle init ̶type java-library • java-library • groovy-library • scala-library • 各言語の動作する最小プロジェクト • basic • Gradle関連のファイルのみ
29.
Javaビルド apply plugin: 'java' ! repositories
{ mavenCentral() } ! dependencies { compile 'org.slf4j:slf4j-api:1.7.5' testCompile "junit:junit:4.11" } build.gradle Javaプラグイン使用宣言 depedencies で指定された成果物を 探索する成果物リポジトリとして MavenCentralリポジトリを指定 ビルドに必要なライブラリの指定 compile : ソースビルド testCompile : テストソースビルド
30.
Javaビルド $ gradle build ! :compileJava :processResources :classes :jar :assemble :compileTestJava :processTestResources :testClasses :test :check :build ! BUILD
SUCCESSFUL ! Total time: 7.049 secs ソースコンパイル jarファイル生成 テストソースコンパイル テスト実行 チェック build.gradleにcheckstyleやfindbugsプラグインを 適用するだけで、各チェックツールを実行してくれる
31.
Javaビルド (発展)
32.
SourceSets • ソースセットの場所をデフォルトから変更する sourceSets { main.java.srcDir
src test.java.srcDir test } build.gradle • jar生成時のマニフェストを記述する jar { manifest { attributes("Implementation-Title": "Gradle", "Implementation-Version": version) } } build.gradle
33.
Dependencies • 依存しているライブラリを指定する build.gradle repositories { mavenCentral() ivy
{ url http://repo.mycompany.com/repo" layout maven } } ! dependencies { compile org.hibernate:hibernate-core: 4.2.14.Final'' testCompile "junit:junit:4.11" } MavenCentral以外のリポジトリを指定 依存ライブラリは $GroupId : $artifactId : $version の形式で指定する
34.
Dependencies • プロジェクトが依存しているライブラリの確認コマンド $gradle dependencies
-q ! ------------------------------------------------------------ Root project ------------------------------------------------------------ ! archives - Configuration for archive artifacts. No dependencies ! compile - Compile classpath for source set 'main'. --- org.hibernate:hibernate-core:4.2.14.Final +--- antlr:antlr:2.7.7 +--- org.jboss.logging:jboss-logging:3.1.0.GA +--- dom4j:dom4j:1.6.1 +--- org.javassist:javassist:3.18.1-GA +--- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:1.0.1.Final +--- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final --- org.hibernate.common:hibernate-commons-annotations:4.0.2.Final --- org.jboss.logging:jboss-logging:3.1.0.CR2 -> 3.1.0.GA ! … このプロジェクトは hibernate-core に依存 hibernate-core が 依存してるライブラリ群
35.
静的解析ツール • Java開発でお馴染みのチェックツール群も簡単に使える apply plugin:
checkstyle apply plugin: findbugs apply plugin: pmd apply plugin: jdepend ! // チェックエラーでビルド失敗にしないため [Checkstyle, FindBugs, Pmd].each { type -> tasks.withType(type) { ignoreFailures = 'true' } } build.gradle 各ツールのチェックタスクがJavaプラグインの checkタスク加わる ※ checkstyleのみ規約ファイルが必要 => $ROOT/config/checkstyle/checkstyle.xml
36.
便利な機能
37.
IDE系 プラグイン
38.
IDE系プラグイン • 各IDEのプロジェクトファイルを生成する => 第38章
Eclipse プラグイン http://gradle.monochromeroad.com/docs/userguide/eclipse_plugin.html $ gradle eclipse $ gradle idea build.gradle • どの言語のプラグインと一緒に利用するかで生成される内容が異なる • 各々の好きなIDEで開発できる • Build init pluginと併用するとプロト作成が る apply plugin: groovy apply plugin: eclipse apply plugin: idea => 第39章 IDEAプラグイン http://gradle.monochromeroad.com/docs/userguide/idea_plugin.html
39.
既存ビルドツール との連携
40.
Antタスクのインポート • build.xmlをGradleのタスクとして使える => 第17章
GradleからAntを使う http://gradle.monochromeroad.com/docs/userguide/ant.html ant.importBuild build.xml build.gradle
41.
Mavenプロジェクトの変換 • pom.xmlをbuild.gradleに変換する $ gradle
init ̶type pom => 47.3.1. "pom" (Maven conversion) http://www.gradle.org/docs/current/userguide/build_init_plugin.html • POMファイル生成やMavenデプロイが出来るプラグイン => 第52章 Mavenプラグイン http://gradle.monochromeroad.com/docs/userguide/maven_plugin.html => Chapter 65. Maven Publishing (new) http://gradle.monochromeroad.com/docs/userguide/publishing_maven.html#publishing_maven:apply_plugin
42.
実行系 プラグイン
43.
Applicationプラグイン • プログラムの実行や配布形式の作成 => 第45章
アプリケーション プラグイン http://gradle.monochromeroad.com/docs/userguide/application_plugin.html build.gradle apply plugin: application mainClassName = org.sample.Greet $ gradle run :compileJava :processResources :classes :run Hello application plugin ! BUILD SUCCESSFUL ! Total time: 8.837 secs ※ distZip / distTarタスクを実行すると、 依存ライブラリと起動スクリプトを含んだ 圧縮ファイルが生成される
44.
マルチプロジェクト
45.
マルチプロジェクトの定義 • Gradleではマルチプロジェクトを簡単に定義できる => 第56章
マルチプロジェクトのビルド http://gradle.monochromeroad.com/docs/userguide/multi_project_builds.html ├── ProjectA │ └── src └── Build ├── build.gradle ├── settings.gradle └── ProjectB └── src includeFlat ProjectA include ProjectB settings.gradle subprojects { apply plugin: java repositories { mavenCentral() } dependencies { testCompile junit:junit:4.11 } } build.gradle ProjectA / Project Bに 共通な設定を記述 (固有な設定は project(:ProjectA) { } のように記述する) ビルド対象の ディレクトリ名を指定
46.
マルチプロジェクトの実行 $ gradle build
-q ! :ProjectA:compileJava :ProjectA:processResources UP-TO-DATE ! … ! :ProjectA:check :ProjectA:build :ProjectB:compileJava UP-TO-DATE :ProjectB:processResources UP-TO-DATE ! … ! :ProjectB:check UP-TO-DATE :ProjectB:build ! BUILD SUCCESSFUL ProjectAのビルドタスクが 実行される ProjectBのビルドタスクが 実行される ※ProjectA/Bにファイルを 追加することなく、Gradleの ビルドタスクを実行できる (成果物は各プロジェクト内に 生成される)
47.
まとめ
48.
Gradleまとめ • 記述量が少なく、かつ細かな設定も可能 • 結構なんでもできる •
COCによる暗黙の了解が増える => Ant/Mavenに比べるとビルドスクリプトの見通しが良くなる => Androidアプリ / マルチプロジェクトなど、他にも多数のトピック => 最近のアップデートでは cppプロジェクト関連の機能もよく追加されてる => Groovyもそこまで市民権を得てる訳ではない… => 結局ビルド職人はなくならない?
49.
参考資料
50.
Gradle関連の書籍 Gradle in Action
(2014/3/9) ・依存関係やマルチプロジェクトビルドについて、 さらには継続的インテグレーションやGradleプラグインの 作成方法などについての包括的な記述がある ・基本的な事柄からマルチプロジェクトビルドや継続的 デリバリーなどについても言及あり ・コードや図も多くて見やすいので英語苦手でも行けるかも Gradle Effective Implementation Guide (2012/10/25) Gradle Beyond the Basics (2013/7/16) Building and Testing with Gradle (2011/7/16) • 日本語の書籍も執筆中との話… • Androidビルドについて書かれた書籍はまだない?
51.
参考サイト • 公式のユーザガイドが充実してる => Gradle入門
- Qiita http://qiita.com/vvakame/items/83366fbfa47562fafbf4 http://www.gradle.org/documentation => 有志による邦訳:http://gradle.monochromeroad.com/docs/ • 日本語資料はJGGUGさん周りを… => nobusue/GradleHandson - Github https://github.com/nobusue/GradleHandson
52.
終
Download