安裝以前首先要確保已經安裝配置好了java環境,由於我安裝的Gradle是4.7的,書上講的是2.14.1的,因此我沒有按照書上的,我參考了Gradle官網的安裝步驟,4.7版本要求java版本最低是1.7的,由於個人java是1.8的,因此是能夠了,咱們檢查下java版本便可,若是低於1.7的話,就安裝1.7以上便可。英文還能夠的同窗能夠直接對照官網的步驟來安裝,神奇的傳送門html
@MacPro:~% java -version
java version "1.8.0_92"
複製代碼
接着開始安裝gradle,本來我想按照官網介紹的使用包管理器的方式安裝的,無奈輸入命令以後半天沒有反應,多是命令行方式下載太慢了,我懶得等,就取消了,就下載了源碼包進行安裝配置,若是有同窗想用包管理器的方式安裝的話,輸入下面命令便可:java
$ brew install gradle
複製代碼
等待完成安裝便可。我仍是來介紹下使用源碼包的方式安裝步驟吧:vim
首先要下載安裝包api
能夠選擇下載二進制包和完整包,完整包包括二進制文件和文檔還有源碼,我下載的是完整包,完整包,你也能夠選擇下載二進制包,都同樣的哈,二進制包緩存
解壓下載的包 按照下面的步驟來便可,注意gradle的包的名字要是你下載的哦,bash
$ mkdir /opt/gradle
$ unzip -d /opt/gradle gradle-4.7-bin.zip
$ ls /opt/gradle/gradle-4.7
LICENSE NOTICE bin getting-started.html init.d lib media
複製代碼
$ export PATH=$PATH:/opt/gradle/gradle-4.7/bin
複製代碼
而後執行source ~/.bash_profile便可生效閉包
PS:若是你使用了例如zsh的話,好比我,還須要編輯下.zshrc文件,加入一行代碼app
source ~/.bash_profile
複製代碼
而後執行下面代碼就OK了工具
source ~/.zshrc
複製代碼
$ gradle -v
------------------------------------------------------------
Gradle 4.7
------------------------------------------------------------
Build time: 2018-04-18 09:09:12 UTC
Revision: b9a962bf70638332300e7f810689cb2febbd4a6c
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM: 1.8.0_92 (Oracle Corporation 25.92-b14)
OS: Mac OS X 10.13.5 x86_64
複製代碼
出現相似上面的信息便可學習
我沒有使用Linux和Windows,若是有同窗使用這兩種環境,請參考Gradle官網
首先,咱們新建一個目錄,而後建立一個build.gradle文件,對,就像咱們Android中的build.gradle文件同樣,僅僅名字同樣哈,而後打開文件輸入一下內容
task{
doLast{
println 'Hello world'
}
}
複製代碼
保存文件,打開命令行進入到文件所在目錄下,執行命令:
$gradle -q hello
Hello world
複製代碼
而後咱們就看到了一頓編譯,而後獲得了咱們想要的結果。下面咱們來分析下結果產生的步驟和緣由
Wrapper,其實就是對Gradle的一層包裝,便於在開發過程當中統一Gradle構建的版本,使得你們都使用統一的Gradle版本,避免由於Gradle版本不統一帶來沒必要要的問題
Gradle提供了內置的Wrapper task幫助咱們自動生成Wrapper所需的目錄文件,在一個項目的根目錄中輸入gradle wrapper便可生成:
$gradle wrapper
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
複製代碼
咱們查看一下目錄列表
|____gradle
| |____wrapper
| | |____gradle-wrapper.jar
| | |____gradle-wrapper.properties
|____gradlew
|____build.gradle
|____gradlew.bat
複製代碼
gradlew和gradlew.bat分別是Linux和Windows下的可執行腳本,用法和gradle同樣,gradle怎麼用它們就怎麼用,gradle-wrapper.jar是具體業務邏輯實現的jar包,gradlew最終仍是使用java執行的這個jar包來執行相關gradle操做,gradle-wrapper.properties是gradle的配置文件,用於配置使用哪一個版本的Gradle等。
咱們在執行gradle wrapper生成相關文件的時候,還能夠指定一些參數,來控制Wrapper的生成
該文件是gradle wrapper的配置文件,咱們上面執行該任務的任何配置都會被寫進該文件中,咱們比較關心的distributionUrl字段,這個決定你的gradle wrapper依賴哪一個Gradle版本,通常是這樣的distributionUrl=https://services.gradle.org/distributions/gradle-4.7-bin.zip,咱們若是要看Gradle的源碼的話,就把bin改爲all就能夠了,這個路徑是下載Gradle的路徑,若是裕興./gradlew的時候一直卡着不動,多是由於官方的Gradle地址被封了,建議換成映像地址
gradle-wrapper.properties文件是由Wrapper Task生成的,其實咱們也能夠自定義配置該Wrapper task來達到咱們配置gradle-wrapper.properties的目的,在build.gradle構建文件中加入以下腳本:
task wrapper(type:Wrapper){
gradleVersion='2.4'
}
複製代碼
這樣咱們再執行gradle wrapper的時候就會默認生成2.4版本的wrapper了。 固然,你也能夠把gradle-wrapper.properties文件中的值配置在這裏。
Gradle日誌便於咱們遇到問題的時候分析問題,其實Gradle的日誌和Android同樣也是分級別的
$gradle -q tasks //是輸出QUIET級別及其之上的日誌信息
$gradle -i tasks //輸出INFO級別及其之上的日誌 信息
複製代碼
若是不設置選項,就是默認輸出LIFECYCLE級別及其之上的日誌信息
在使用Gradle構建的時候,不免會有問題致使失敗,這時候咱們就須要根據日誌來分析問題,Gradle還提供了堆棧信息的打印,默認狀況下是關閉的,咱們須要經過命令行的方式打開
有時候咱們須要本身輸出一些日誌信息,來驗證咱們的邏輯是否正確,一般狀況下咱們可使用print系列方法
println '輸出日誌信息' //被Gradle定向爲QUIET級別日誌
複製代碼
除了print系列方法外,咱們還可使用logger更靈活的出書不一樣級別的日誌,
logger.quiet('quiet日誌信息')
logger.error('error日誌信息')
logger.warn('warn日誌信息')
logger.info('info日誌信息')
...
複製代碼
這裏其實就是調用的Project的getLogger()來獲取的Logger對象的實例
命令行下的工具都有命令,基本上全部的命令行工具都有幫助,基本都很簡單,Gradle Wrapper使用幫助的命令有如下幾個
./gradlew -?
./gradlew -h
./gradlew -help
複製代碼
有時候咱們不知道如何構建一個功能,不知道執行哪一個Task,這時候就須要查看哪些Task可執行,都具有什麼功能,經過運行./gradlew tasks --all命令,輸出以下
> Task :tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-test'.
components - Displays the components produced by root project 'gradle-test'. [incubating]
dependencies - Displays all dependencies declared in root project 'gradle-test'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-test'.
dependentComponents - Displays the dependent components of components in root project 'gradle-test'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'gradle-test'. [incubating]
projects - Displays the sub-projects of root project 'gradle-test'.
properties - Displays the properties of root project 'gradle-test'.
tasks - Displays the tasks runnable from root project 'gradle-test'.
Other tasks
-----------
hello
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
複製代碼
能夠看到,Gradle會以分組的方式列出Task列表,好比構建類的有init,wrapper,幫助類的有help、tasks等,還有咱們自定義的hello,其實,咱們的task和Gradle中的task都是同樣的,都是能夠執行的,不要以爲很難理解。
若是咱們想看一個task的幫助信息怎麼辦,簡單,使用help task便可,例如:
./gradlew help --task tasks
複製代碼
就能夠顯示tasks任務的幫助信息
> Task :help
Detailed task information for tasks
Path
:tasks
Type
TaskReportTask (org.gradle.api.tasks.diagnostics.TaskReportTask)
Options
--all Show additional tasks and detail.
Description
Displays the tasks runnable from root project 'gradle-test'.
Group
help
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
複製代碼
從幫助信息裏咱們能夠看到這個Task有什麼用,是什麼類型,屬於哪一個分組,有哪些可使用的參數,好比這裏就有一個--all參數,能夠查看不少額外的詳細信息
有時候咱們會依賴一些第三方庫,而像Maven這類工具都是有緩存的,由於不可能每次編譯的時候都去下載第三方庫,緩存就是這個目的,先使用緩存,沒有再下載,默認狀況下,Maven會控制緩存的更新,可是有時候會使用snapshot版本,這個時候就須要強制刷新,只要在命令行運行的時候加上--refresh-dependencies參數就能夠了
./gradlew --refresh-dependecies assemble
複製代碼
若是咱們須要同時運行多個任務,好比在執行jar以前先進行clean,那麼咱們就須要先執行clean對class文件清理,再執行jar生成一個jar包,若是還有更多的命令,只須要按順序以空格分開便可
./gradlew clean jar
複製代碼
有時候咱們的任務名字很長,若是在執行的時候所有拼寫會浪費時間,爲此Gradle提供了基於駝峯命名法的縮寫調用,好比connectCheck,咱們執行的時候可使用./gradlew cc這樣的方式來執行
好累,先把書裏的代碼邏輯執行看懂再來寫進博客,挺麻煩的,有時候真的想放棄,可是,又想到不少像我這樣想學習Gradle又沒有系統資料的同窗,再加上本身若是隻看書操做的話,又會很快忘記,就仍是堅持下來, 第一篇就先結束了,等待第二篇吧,我不是扔物線大神,沒有那麼忙,相信我,第二篇很快就出來啦。(也不會太快,hiahiahia!!!)