Submit Search
Gradle handson
6 likes
•
10,332 views
Nemoto Yusuke
Gradleハンズオン資料
Technology
Read more
1 of 52
Download now
Downloaded 10 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
More Related Content
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
ShuheiUda
PDF
100%Kotlin ORM Ktormを試してみた
Keita Tsukamoto
PPTX
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
PDF
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
PDF
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
オラクルエンジニア通信
PPTX
[BurpSuiteJapan]Burp Suite導入・操作
Burp Suite Japan User Group
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
PDF
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
ShuheiUda
100%Kotlin ORM Ktormを試してみた
Keita Tsukamoto
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
オラクルエンジニア通信
[BurpSuiteJapan]Burp Suite導入・操作
Burp Suite Japan User Group
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA
What's hot
(20)
PDF
Gradle布教活動
Nemoto Yusuke
PPTX
Jenkins
MohanRaviRohitth
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PDF
負荷試験ツールlocustを使おう
iRidge, Inc.
PDF
Power app custom api v0.1.21.1221
Ayumu Inaba
PDF
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
PDF
Ansibleで始めるインフラ構築自動化
dcubeio
PPTX
Azure Key Vault
junichi anno
PDF
Introduction to GitHub Actions
Knoldus Inc.
PDF
これから始めるSpringのwebアプリケーション
土岐 孝平
PDF
脆弱性診断とはなんぞや
mkoda
PPTX
Cross browser testing with browser stack
Denys Poloka
PDF
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
PDF
Visual StudioやAzureからAzure DevOpsを使う
Takeshi Fukuhara
PDF
今さら聞けないDiとspring
土岐 孝平
PDF
Spring Bootをはじめる時にやるべき10のこと
心 谷本
PDF
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
Yusuke Kodama
PDF
Spring bootでweb ユニットテスト編
なべ
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
PDF
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
Gradle布教活動
Nemoto Yusuke
Jenkins
MohanRaviRohitth
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
負荷試験ツールlocustを使おう
iRidge, Inc.
Power app custom api v0.1.21.1221
Ayumu Inaba
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
Ansibleで始めるインフラ構築自動化
dcubeio
Azure Key Vault
junichi anno
Introduction to GitHub Actions
Knoldus Inc.
これから始めるSpringのwebアプリケーション
土岐 孝平
脆弱性診断とはなんぞや
mkoda
Cross browser testing with browser stack
Denys Poloka
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Visual StudioやAzureからAzure DevOpsを使う
Takeshi Fukuhara
今さら聞けないDiとspring
土岐 孝平
Spring Bootをはじめる時にやるべき10のこと
心 谷本
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
Yusuke Kodama
Spring bootでweb ユニットテスト編
なべ
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
Ad
Viewers also liked
(13)
PPTX
Gradle入門
orekyuu
PDF
Gradleどうでしょう
Takuma Watabiki
PPTX
Spring boot劇的ビフォーアフター
orekyuu
PDF
A Study of the Characteristics of Developers′ Activities in GitHub
奈良先端大 情報科学研究科
PDF
GradleのREPLプラグイン紹介 #jggug
kyon mm
KEY
MySQLでNoSQL - アメーバピグでのNoSQLの実例
Kazuhiro Oinuma
PDF
Gws 20141024 gradle_intro
Nobuhiro Sue
PDF
明日から使えるgradle
kimukou_26 Kimukou
PDF
システム開発を前進させるためのGradle導入法
Takuma Watabiki
PPTX
IdrisでWebアプリを書く
Hideyuki Tanaka
PDF
Maven基礎
Toshio Takiguchi
PDF
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
PDF
Closures and methodMissing are real
Takahiro Sugiura
Gradle入門
orekyuu
Gradleどうでしょう
Takuma Watabiki
Spring boot劇的ビフォーアフター
orekyuu
A Study of the Characteristics of Developers′ Activities in GitHub
奈良先端大 情報科学研究科
GradleのREPLプラグイン紹介 #jggug
kyon mm
MySQLでNoSQL - アメーバピグでのNoSQLの実例
Kazuhiro Oinuma
Gws 20141024 gradle_intro
Nobuhiro Sue
明日から使えるgradle
kimukou_26 Kimukou
システム開発を前進させるためのGradle導入法
Takuma Watabiki
IdrisでWebアプリを書く
Hideyuki Tanaka
Maven基礎
Toshio Takiguchi
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
Closures and methodMissing are real
Takahiro Sugiura
Ad
Similar to Gradle handson
(20)
PDF
Gws 20120521 gradle
Nobuhiro Sue
PDF
Groovy base gradle_20130309
Nobuhiro Sue
PDF
Gradle a new Generation Build Tool
Shinya Mochida
PPTX
[社内勉強会]Gradleを使おう
hirooooo
PDF
Gws 20130315 gradle_handson
Nobuhiro Sue
PDF
Agileツール適合化分科会(構成管理・ビルドツール)
masanori kataoka
PDF
Jjug 20140430 gradle_basic
Takuma Watabiki
ODP
Nseg20120929
hiro345
PDF
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
PDF
Android App Development with Gradle & Android Studio
Soichiro Kashima
PDF
Spring in-summer-gradle-hands on-withanswers
Takuma Watabiki
PDF
Android アプリ開発における Gradle ビルドシステム
Yu Nobuoka
PDF
GradleによるG*なビルドシステムの構築
Masatoshi Hayashi
PDF
Jenkins plugin memo
Kiyotaka Oku
PDF
Jjug 20140430 gradle_intro
Nobuhiro Sue
PPT
Maven2 plugin
Funato Takashi
PDF
AndroidStudioはじめました ~Gradle編~
Yabata Tomomitsu
PDF
Android studio で行ってみよう!!
Kazuaki Ueda
PPTX
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Masaki Yamamoto
PDF
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
Gws 20120521 gradle
Nobuhiro Sue
Groovy base gradle_20130309
Nobuhiro Sue
Gradle a new Generation Build Tool
Shinya Mochida
[社内勉強会]Gradleを使おう
hirooooo
Gws 20130315 gradle_handson
Nobuhiro Sue
Agileツール適合化分科会(構成管理・ビルドツール)
masanori kataoka
Jjug 20140430 gradle_basic
Takuma Watabiki
Nseg20120929
hiro345
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
Android App Development with Gradle & Android Studio
Soichiro Kashima
Spring in-summer-gradle-hands on-withanswers
Takuma Watabiki
Android アプリ開発における Gradle ビルドシステム
Yu Nobuoka
GradleによるG*なビルドシステムの構築
Masatoshi Hayashi
Jenkins plugin memo
Kiyotaka Oku
Jjug 20140430 gradle_intro
Nobuhiro Sue
Maven2 plugin
Funato Takashi
AndroidStudioはじめました ~Gradle編~
Yabata Tomomitsu
Android studio で行ってみよう!!
Kazuaki Ueda
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Masaki Yamamoto
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
More from Nemoto Yusuke
(8)
PDF
Mattermost Plugin Bounty Programについて
Nemoto Yusuke
PDF
Scalaを触ってみた
Nemoto Yusuke
PDF
SVG事始め
Nemoto Yusuke
PDF
実践プログラミング DSL
Nemoto Yusuke
PDF
ブログる
Nemoto Yusuke
PDF
社内勉強会 - 書籍管理Webシステム
Nemoto Yusuke
PDF
社内勉強会 - chef
Nemoto Yusuke
PDF
Sinatra slideshare
Nemoto Yusuke
Mattermost Plugin Bounty Programについて
Nemoto Yusuke
Scalaを触ってみた
Nemoto Yusuke
SVG事始め
Nemoto Yusuke
実践プログラミング DSL
Nemoto Yusuke
ブログる
Nemoto Yusuke
社内勉強会 - 書籍管理Webシステム
Nemoto Yusuke
社内勉強会 - chef
Nemoto Yusuke
Sinatra slideshare
Nemoto Yusuke
Recently uploaded
(11)
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
20250729_Devin-for-Enterprise
Masaki Yamakawa
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
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