Gradle是一個使用Groovy語言實現的用於構建項目的框架(僅僅是一個框架)。構件項目時真正起做用的是基於gradle框架使用Groovy語言實現的gradle插件。Gradle默認提供了不少的插件,好比:Java-Plugin、Maven-Plugin等。java
Groovy是用於java虛擬機的一種敏捷的動態語言,它是一種成熟的面對對象編程語言,便可以用於面對對象編程,又能夠用做純粹的的腳本語言。使用該種語言沒必要編寫過多的代碼,同時又具備閉包和動態語言的其餘特性。web
Groovy徹底兼容java的語法(都是基於jvm的)編程
分號是可選的api
類、方法默認是public的閉包
編譯器給屬性自動加上get/set方法app
屬性直接用點號獲取框架
最後一個表達式的值會被做爲返回值webapp
==等同於equals方法,不會有NullPointExceptionsjvm
自帶assert語句maven
可選類型定義
可選的括號
字符串,三種表達形式
集合API,更簡單的寫法
閉包
1. 可選的類型定義
Def version =1
2. Assert 斷言
3. 括號是可選的
4. 字符串
單引號
雙引號(裏面能夠插入變量)
三個單引號(能夠換行)
5. 集合api
a) List(對應ArrayList)
i. Def list = [‘ant’,‘gradle’]
ii. List << ‘maven’
b) Map(對應linkedHashMap)
i. Def map = [‘ant’:2000 , ‘maven’:2004]
ii. Map.gradle = 2009 Map[‘gradle’] = 2009
6. 閉包
代碼塊,能夠被複制給變量,也能夠當作一個方法
def c1 = { |
Gradle構建中的兩個基本概念是項目(project)和任務(task),每一個構建至少包含一個項目,項目中包含一個或者多個任務。在多項目構建中,一個項目能夠依賴於其餘項目;相似的,任務能夠造成一個依賴關係圖來確保他們的執行順序。
1. 項目(project):一個項目表明一個正在構建的組件(好比一個jar),當構建啓動以後,gradle會基於build.gradle實例化一個org.gradle.api.Project類,而且可以經過project變量使其隱式可用。
a) Group 、name、version
b) Apply、dependencies、repositories、task
c) 屬性的其餘配置:ext、gradle.properties
2. 任務(task):任務對應org.gradle.api.Task。主要包括任務動做和任務依賴。任務動做定義了一個最小的工做單元,能夠依賴於其餘任務、動做序列和執行條件。
a) Dependson
b) DoFirst、doLast <<
3. 實例:在intellij IDE 中新建gradle工程時,沒有自動生成maven相似的目錄,下面的任務能夠用於建立
4. def createDir = { |
1. 初始化:根據gradle腳本建立一個項目。初始化參與構建的項目
2. 配置:用來生成task的生成順序和執行順序
3. 執行,動做代碼(執行代碼在配置代碼以後執行)
提供了鉤子方法(hook)
1. 解決版本衝突:查看依賴報告1.排除傳遞性依賴2.強制一個版本
2. 多項目構建