前言

Gradle

自動化編譯工具為 Ant , Maven ,Gradle

Ant -> 【認識 Gradle】(1)講古的時間 Apache Ant | CodeData

提供一組 XML 標籤,讓你定義一個『專案(project)』內要提供哪些『目標(target)』,在目標內需要描述有哪些『任務(task)』需要被執行。簡而言之,Ant 讓你用 XML 的方式描述一些自動化編譯的事項,就如同撰寫程式語言一般。說到程式語言不外乎,語法、語意與函式,若將上述概念轉換成 Ant 的領域,則為 XML、DataType、Properties、Task。

Maven -> 【認識 Gradle】(2)講古的時間 Apache Maven by qrtt1 | CodeData

Maven 被創造出來的動機有二個主要原因:

  1. Java 專案的標準化
  2. Java 專案函式庫管理的問題

Gradle -> 為什麼要用Gradle? - 申思維的技術站點 | CodeData

ANT的缺點:

很容易變臃腫。雖然ANT 提倡大家寫個MODULE出來,但是大部分人都不會這樣做。基本都喜歡把所有內容都寫在build.xml中

MAVEN的缺點:

比較精簡,但是無法定制化。在MAVEN中,想要定制,必須得寫個plugin 或者做些hack, 無法像ANT那樣靈活。可以說走了與ANT相反的極端。

ANT和MAVEN共同的缺點:

都很複雜。XML 在2000年還是很炫酷的,但是到了現在就是喳喳。。。寫起來麻煩。

Gradle 把兩者的優點結合到了一起。

比ant 語法經驗, 比MAVEN靈活。可以自由定制。

檔案架構

【認識 Gradle】(3)Gradle 起手式 by qrtt1 | CodeData

範例一 java project

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 引用 java plugin 獲得編譯 java 專案相關的 task $ */
apply plugin: 'java'
/* 引用 application plugin 獲得執行 java 專案相關的 task $ */
apply plugin:'application'
/* 執行 application plugin 用到的參數 $ */
mainClassName = "tw.com.codedata.HelloWorld"
/* 設定 maven repository server $ */
repositories {
mavenCentral()
}
/* 宣告專案的相依函式庫 $ */
dependencies {
compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1'
compile group: 'log4j', name: 'log4j', version: '1.2.16'
}

範例二 android project

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
/* 引用 java plugin 獲得編譯 android 專案相關的 task  */
apply plugin: 'com.android.application'
/* 設定 android SDK 目標版本 要和“com.android...”下方同一版本 */
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
/* 設定 android SDK 最小資源版本 */
defaultConfig {
applicationId "com.ftc.ec"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
/* */
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
/* 宣告專案的相依函式庫 */
dependencies {
//-- project
compile project(':chachalibrary')
//-- 線上jar檔
compile 'com.android.support:appcompat-v7:23.1.1'
//-- local jar檔
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/ormlite-core-4.48.jar')
...
}
參考來源

CodeData系列文章

  1. 【認識 Gradle】(1)講古的時間 Apache Ant | CodeData
  2. 【認識 Gradle】(2)講古的時間 Apache Maven by qrtt1 | CodeData
  3. 【認識 Gradle】(3)Gradle 起手式 by qrtt1 | CodeData
  4. 【認識 Gradle】(4)看懂 Gradle Script by qrtt1 | CodeData
  5. 【認識 Gradle】(5)Gradle Task 觀念導讀 | CodeData
  6. 【認識 Gradle】(6)Java 專案與 Build Script 客製化 | CodeData
  7. 【認識 Gradle】(7)Java 專案相依管理 | CodeData

其他

  1. 我與小崴崴的工作日記: [教學] ANT 的基本介紹
  2. Maven入門指南① :Maven 快速入門及簡單使用- 羅韜- 博客園