SlideShare a Scribd company logo
Submit Search
Upload
淺談 Groovy 與 Gradle
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
26 likes
•
8,405 views
1
of
39
淺談 Groovy 與 Gradle
•
26 likes
•
8,405 views
Report
Share
Download Now
Download to read offline
Technology
- 從 Java 到 Groovy - 使用 Groovy 建立 DSL - 自動化工具 Gradle - Gradle 與 IDE
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
Spring 2.0 技術手冊第五章 - JDBC、交易支援 by
Spring 2.0 技術手冊第五章 - JDBC、交易支援
Justin Lin
5.1K views
•
68 slides
Spring native について by
Spring native について
Takamasa Mitsuji
466 views
•
34 slides
さくっと理解するSpring bootの仕組み by
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
65.2K views
•
38 slides
ウェブセキュリティの常識 by
ウェブセキュリティの常識
Hiroshi Tokumaru
31.4K views
•
39 slides
社内Java8勉強会 ラムダ式とストリームAPI by
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
54.9K views
•
54 slides
Java EE パフォーマンスTips #glassfish_jp by
Java EE パフォーマンスTips #glassfish_jp
Norito Agetsuma
8.1K views
•
32 slides
More Related Content
What's hot
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方 by
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
Yoshifumi Kawai
25.8K views
•
32 slides
Spring bootでweb 基本編 by
Spring bootでweb 基本編
なべ
8.7K views
•
25 slides
Jenkinsはじめました - Yahoo! JAPANのCI+CD - by
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Yahoo!デベロッパーネットワーク
11.6K views
•
29 slides
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa by
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
5.8K views
•
61 slides
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門 by
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
Akira Shimosako
28.6K views
•
37 slides
1 システム開発の基礎 第1章 システム開発の基礎知識(1) by
1 システム開発の基礎 第1章 システム開発の基礎知識(1)
Enpel
2.6K views
•
18 slides
What's hot
(20)
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方 by Yoshifumi Kawai
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
Yoshifumi Kawai
•
25.8K views
Spring bootでweb 基本編 by なべ
Spring bootでweb 基本編
なべ
•
8.7K views
Jenkinsはじめました - Yahoo! JAPANのCI+CD - by Yahoo!デベロッパーネットワーク
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Yahoo!デベロッパーネットワーク
•
11.6K views
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa by Insight Technology, Inc.
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
•
5.8K views
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門 by Akira Shimosako
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
Akira Shimosako
•
28.6K views
1 システム開発の基礎 第1章 システム開発の基礎知識(1) by Enpel
1 システム開発の基礎 第1章 システム開発の基礎知識(1)
Enpel
•
2.6K views
Jbatch実践入門 #jdt2015 by Norito Agetsuma
Jbatch実践入門 #jdt2015
Norito Agetsuma
•
13.9K views
JSRとJEPとJBSの見方や調べ方について by Aya Ebata
JSRとJEPとJBSの見方や調べ方について
Aya Ebata
•
3.5K views
決済サービスのSpring Bootのバージョンを2系に上げた話 by Ryosuke Uchitate
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
•
1.7K views
微積分 by 鍾誠 陳鍾誠
微積分
鍾誠 陳鍾誠
•
7.6K views
飛行機設計の入門 by yuukivel
飛行機設計の入門
yuukivel
•
8.9K views
微積分& 工程數學 (第二版) by 鍾誠 陳鍾誠
微積分& 工程數學 (第二版)
鍾誠 陳鍾誠
•
14.6K views
V$SQLとその周辺でER図を描いてみよう! by 歩 柴田
V$SQLとその周辺でER図を描いてみよう!
歩 柴田
•
5.4K views
今さら聞けないDiとspring by 土岐 孝平
今さら聞けないDiとspring
土岐 孝平
•
24.8K views
今こそStream API入門 by Yuichi Sakuraba
今こそStream API入門
Yuichi Sakuraba
•
6K views
Mavenの真実とウソ by Yoshitaka Kawashima
Mavenの真実とウソ
Yoshitaka Kawashima
•
13K views
これからSpringを使う開発者が知っておくべきこと by 土岐 孝平
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
•
21.5K views
そんなリザルトキャッシュで大丈夫か? #jjug by Toshiaki Maki
そんなリザルトキャッシュで大丈夫か? #jjug
Toshiaki Maki
•
10.7K views
イエラエセキュリティMeet up 20210820 by GMOサイバーセキュリティ byイエラエ株式会社
イエラエセキュリティMeet up 20210820
GMOサイバーセキュリティ byイエラエ株式会社
•
1.4K views
【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~ by Hinemos
【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~
Hinemos
•
5.8K views
Viewers also liked
Joda-Time & JSR 310 – Problems, Concepts and Approaches by
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Justin Lin
6.8K views
•
66 slides
Java SE 8 技術手冊第 1 章 - Java平台概論 by
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
11.6K views
•
44 slides
Java SE 8 技術手冊第 12 章 - Lambda by
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
4.4K views
•
100 slides
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 by
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
2.2K views
•
80 slides
Java SE 8 技術手冊第 10 章 - 輸入輸出 by
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
2.6K views
•
48 slides
Java SE 7 技術手冊投影片第 09 章 - Collection與Map by
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
2.5K views
•
68 slides
Viewers also liked
(20)
Joda-Time & JSR 310 – Problems, Concepts and Approaches by Justin Lin
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Justin Lin
•
6.8K views
Java SE 8 技術手冊第 1 章 - Java平台概論 by Justin Lin
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
•
11.6K views
Java SE 8 技術手冊第 12 章 - Lambda by Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
•
4.4K views
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 by Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
•
2.2K views
Java SE 8 技術手冊第 10 章 - 輸入輸出 by Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
•
2.6K views
Java SE 7 技術手冊投影片第 09 章 - Collection與Map by Justin Lin
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
•
2.5K views
Java SE 8 技術手冊第 4 章 - 認識物件 by Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
•
4.2K views
Java SE 8 技術手冊第 8 章 - 例外處理 by Justin Lin
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
•
3.2K views
Java SE 8 技術手冊第 5 章 - 物件封裝 by Justin Lin
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
•
3.4K views
Java SE 8 技術手冊第 3 章 - 基礎語法 by Justin Lin
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
•
5.3K views
Java SE 8 技術手冊第 6 章 - 繼承與多型 by Justin Lin
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
•
3.5K views
Java SE 8 技術手冊第 9 章 - Collection與Map by Justin Lin
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
•
4.9K views
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計 by Justin Lin
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Justin Lin
•
2.4K views
Java 8 與 retrolambda by Justin Lin
Java 8 與 retrolambda
Justin Lin
•
5K views
資料結構 by Justin Lin
資料結構
Justin Lin
•
1.8K views
Python 起步走 by Justin Lin
Python 起步走
Justin Lin
•
7.2K views
3D 之邏輯與美感交會 - OpenSCAD by Justin Lin
3D 之邏輯與美感交會 - OpenSCAD
Justin Lin
•
1.4K views
Java SE 8 技術手冊第 16 章 - 整合資料庫 by Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
•
2.9K views
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註 by Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
•
2.8K views
Java SE 8 技術手冊第 17 章 - 反射與類別載入器 by Justin Lin
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
•
2.3K views
Similar to 淺談 Groovy 與 Gradle
Groovy:Candy for Java Developers by
Groovy:Candy for Java Developers
foxgem
656 views
•
30 slides
Android gradle 从入门到gg 3 by
Android gradle 从入门到gg 3
Jun Liu
812 views
•
20 slides
第十一堂 學習編譯與上架 by
第十一堂 學習編譯與上架
力中 柯
808 views
•
41 slides
2012 java two-desktop-appliction-using-j-ruby-with-swt by
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
508 views
•
37 slides
JCConf2015: groovy to gradle by
JCConf2015: groovy to gradle
Ching Yi Chan
1.4K views
•
57 slides
給 iOS 工程師的 Flutter 開發 by
給 iOS 工程師的 Flutter 開發
Weizhong Yang
7.9K views
•
50 slides
Similar to 淺談 Groovy 與 Gradle
(20)
Groovy:Candy for Java Developers by foxgem
Groovy:Candy for Java Developers
foxgem
•
656 views
Android gradle 从入门到gg 3 by Jun Liu
Android gradle 从入门到gg 3
Jun Liu
•
812 views
第十一堂 學習編譯與上架 by 力中 柯
第十一堂 學習編譯與上架
力中 柯
•
808 views
2012 java two-desktop-appliction-using-j-ruby-with-swt by tka
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
•
508 views
JCConf2015: groovy to gradle by Ching Yi Chan
JCConf2015: groovy to gradle
Ching Yi Chan
•
1.4K views
給 iOS 工程師的 Flutter 開發 by Weizhong Yang
給 iOS 工程師的 Flutter 開發
Weizhong Yang
•
7.9K views
Java Build Tool course in 2011 by Ching Yi Chan
Java Build Tool course in 2011
Ching Yi Chan
•
1.2K views
Android gradle 从入门到gg 0 by Jun Liu
Android gradle 从入门到gg 0
Jun Liu
•
2.5K views
Grails敏捷项目开发 by Michael Yan
Grails敏捷项目开发
Michael Yan
•
1K views
基于 FRIDA 的全平台逆向分析 by CC
基于 FRIDA 的全平台逆向分析
CC
•
15.3K views
容器與 Gitlab CI 應用 by Philip Zheng
容器與 Gitlab CI 應用
Philip Zheng
•
2.8K views
如何在有限資源下實現十年的後端服務演進 by Mu Chun Wang
如何在有限資源下實現十年的後端服務演進
Mu Chun Wang
•
11 views
Gulp.js 自動化前端任務流程 by 洧杰 廖
Gulp.js 自動化前端任務流程
洧杰 廖
•
10.9K views
D2_Node在淘宝的应用实践 by Jackson Tian
D2_Node在淘宝的应用实践
Jackson Tian
•
1.8K views
前端自動化工具 by 國昭 張
前端自動化工具
國昭 張
•
664 views
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構 by Mu Chun Wang
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
Mu Chun Wang
•
2.9K views
Hadoop Map Reduce 程式設計 by Wei-Yu Chen
Hadoop Map Reduce 程式設計
Wei-Yu Chen
•
40.4K views
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較 by Stipc Nsysu
KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較
Stipc Nsysu
•
659 views
这年头,你只需要懂Node webkit by LainZQ
这年头,你只需要懂Node webkit
LainZQ
•
5.9K views
Node.js在淘宝的应用实践 by taobao.com
Node.js在淘宝的应用实践
taobao.com
•
2.6K views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTL
Justin Lin
•
161 views
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
237 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
Recently uploaded
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
40 views
•
37 slides
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
150 views
•
54 slides
Hacking Facebook for fun and profit by Pranav Hivarekar by
Hacking Facebook for fun and profit by Pranav Hivarekar
Pranav Hivarekar
6 views
•
69 slides
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
43 views
•
32 slides
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
43 views
•
25 slides
AI Technology & Development of Civilization by
AI Technology & Development of Civilization
unclebrown017
41 views
•
74 slides
Recently uploaded
(6)
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
40 views
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by Shengyou Fan
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
•
150 views
Hacking Facebook for fun and profit by Pranav Hivarekar by Pranav Hivarekar
Hacking Facebook for fun and profit by Pranav Hivarekar
Pranav Hivarekar
•
6 views
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
43 views
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
43 views
AI Technology & Development of Civilization by unclebrown017
AI Technology & Development of Civilization
unclebrown017
•
41 views
淺談 Groovy 與 Gradle
1.
淺談 Groovy 與 Gradle 林信良 http://openhome.cc
2.
議程 • • • • 從 Java 到
Groovy 使用 Groovy 建立 DSL 自動化工具 Gradle Gradle 與 IDE
3.
從 Java 到
Groovy
4.
Hello, world! • 這是
Java …
5.
• 這是 Groovy
… - 預設 public - 內建 print 函式
6.
• 短一點 … -
自動產生 Setter - 自動產生 Getter
7.
• 省一點 … -
Gstring 直譯 - 透過 Setter 設值 - 透過 Getter 取值 - 括號、逗號可省
8.
• • 還要更少 … 太少了? …
9.
• 多一點 … -
List - Map - Range
10.
• 方便一點 …
11.
• 安全一點 …
12.
• 強大一點 … -
建構式 - 運算子重載
13.
• 更強大一點 … String.prototype.toUpperEach
= function(action) { for(var i = 0; i < this.length; i++) { action(this.charAt(i).toUpperCase()); } }; 'abcdef'.toUpperEach(function(ch) { console.log(ch); });
14.
• 強大、強大再強大 …
XD function toString() { return this.name + ', ' + this.age; } var p1 = {name : 'Justin', age : 38}; var p2 = {name : 'Monica', age : 35}; p1.toString = toString; console.log(p1.toString()); p2.toString = toString; console.log(p2.toString());
15.
使用 Groovy 建立
DSL
16.
Groovy 的 Closure •
Closure? • Lambda?匿名函式?一級函式?
17.
• Closure 應用
18.
• this -
像 Java 的 this,參考至定義 Closure 的類別之實例。 • owner - 包圍 Closure 之物件,也許是 this 參 考之物件,也許是包圍 Closure 之 Closure。 • delegate - 預設是 owner,可以變更指定。
20.
• DSL –
Domain Specific Language • 構思 …傳入 Closure、會有 make、to、 from、body、xml 等方法 …
21.
簡單吧?
22.
自動化工具 Gradle
23.
建構工具元老 • 一組 XML
標籤 - 專案(Project) - 目標(Target) - 任務(Task) • Ant 的經驗累積 <?xml version="1.0" encoding="UTF-8"?> <project name="helloworld" default="build"> <property name="src.dir" value="src" /> <property name="lib.dir" value="libs" /> <property name="resource.dir" value="resources" /> <property name="build.dir" value="build" /> <property name="dist.dir" value="dist" /> <!-- 刪除 build.dir 與 dist.dir --> <target name="clean"> <delete dir="${build.dir}" /> <delete dir="${dist.dir}" /> </target> <!-- 建立 build.dir 與 dist.dir 與複製相關設定檔 --> <target name="prepare" depends="clean"> <mkdir dir="${build.dir}" /> <mkdir dir="${dist.dir}" /> <mkdir dir="${build.dir}/libs" /> <mkdir dir="${build.dir}/all" /> </target> ... - 自動建構的標準化 - 相依管理的需求(以 Ant Ivy 補足)
24.
專案管理工具 • 一組 XML
標籤 - Convention Over Configuration - Archetype plugin - 相依性宣告 • Maven 的經驗累積 - 相依性管理的濫用 - 修改預設行為的難度 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0. 0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>tw.com.codedata</groupId> <artifactId>helloworld</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>helloworld</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
25.
企業自動化工具 • 保持 Ant
的自由度、低於 Maven 學習門檻 - - - - 有著 Lifecycle 的精神 相依性管理機制的便利 DSL 的可讀性與容易撰寫 引用 plugin 獲得需要的編譯功能 • 許多開放原始碼專案與工具採用 Gradle - Hibernate 從 Maven 改用 Gradle … - Spring 只提供 Maven 或 Gradle 兩種下載方式 - Android Studio 使用 Gradle 建構專案
26.
第一個 Gradle 專案 apply
plugin: 'java' apply plugin:'application' mainClassName = "tw.com.codedata.HelloWorld" repositories { mavenCentral() } dependencies { compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1' compile group: 'log4j', name: 'log4j', version: '1.2.16' }
27.
第一個 Gradle 專案 $
gradle run :compileJava :processResources apply plugin: 'java' :classes :run apply plugin:'application' INFO [main] (HelloWorld.java:11) - Hello World mainClassName = "tw.com.codedata.HelloWorld" BUILD SUCCESSFUL repositories { mavenCentral() } Total time: 6.027 secs dependencies { compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1' compile group: 'log4j', name: 'log4j', version: '1.2.16' }
28.
Every configuration file
becomes a programming language…
29.
Hello World • build.gradle Closure task
hello { doLast { println 'Hello world!' } } Closure • 它是一個 Groovy … $ gradle -q hello Hello world!
30.
task upper <<
{ String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " + someString.toUpperCase() } task count << { 4.times { print "$it " } } 4.times { counter -> task "task$counter" << { println "I'm task number $counter" } } $ gradle -q task1 I'm task number 1
31.
• 我不只是設定檔 …
XD task checksum << { fileList('../antLoadfileResources').each {File file -> ant.checksum(file: file, property: "cs_$file.name") println "$file.name Checksum: ${ant.properties["cs_$file.name"]}" } } task loadfile << { fileList('../antLoadfileResources').each {File file -> ant.loadfile(srcFile: file, property: file.name) println "I'm fond of $file.name" } } File[] fileList(String dir) { file(dir).listFiles({file -> file.isFile() } as FileFilter).sort() }
32.
• 不用 Groovy
太多知識,先知道二件事 … - Groovy DSL 大量運用 Closure 機制 - Gradle 的實作大量使用 Delegation 模式 嗯?好像哪裡怪怪的?
33.
Gradle 與 IDE
34.
Gradle 建立基本專案目錄? • build.gradle
可視為 Groovy 原始碼檔案 apply plugin: 'java' task "create-dirs" << { sourceSets*.java.srcDirs*.each { it.mkdirs() } sourceSets*.resources.srcDirs*.each { it.mkdirs() } } • 使用 gradle-templates - https://github.com/townsfolk/gradle-templates - gradle createJavaProject - gradle createWebappProject - gradle createScalaProject - ...
35.
Eclipse • build.gradle apply plugin:
'eclipse'
36.
• 安裝 eclipse-integration-gradle -
https://github.com/spring-projects/eclipse-integration-gradle/ ….
37.
NetBeans • Gradle Plugins -
http://plugins.netbeans.org/plugin/44510/gradle-support
39.
參考資料 • Groovy - http://groovy.codehaus.org/Documentation -
http://www.oracle.com/technetwork/articles/java/groovy1695411.html - http://java.dzone.com/articles/groovy-dsl-simple-example • Gradle - http://www.gradle.org/documentation - http://www.codedata.com.tw/tag/gradle/ • Gradle 與 IntelliJ IDEA - http://blog.lyhdev.com/2013/11/intellij-idea-communityedition-free.html