最近,換了新項目,用起了Gradle。
先說一下Gradle,Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化構建開源工具。它使用一種基於Groovy的特定領域語言(DSL)來聲明項目設置,目前也增加了基於Kotlin語言的kotlin-based DSL,拋棄了基於XML的各種繁瑣配置。
面向Java應用為主。當前其支持的語言限於Java、Groovy、Kotlin和Scala,計划未來將支持更多的語言。通俗的說,Gradle就是打包用的。
可能有人說,那為什么要用Gradle打包呢,首先,打包的時候可能要修改一些東西,比如說配置文件中的一些賬號和密碼,你本地開發和正式環境運行時的內容肯定不一致,所以需要有兩個文件,開發的時候用一個,正式環境的時候用一個。這樣每次打包的時候都要重復的做這些事,每次打包都需要注意這些東西。Gradle可以把這些東西寫成腳本自動運行,這是其一。其次,當我們搭建環境的時候,要用很多jar包,很多jar包之間都有依賴,為了方便引用並下載jar包,就可以用Gradle來配置了。其第一個功能類似Ant,第二個功能類似Maven,
Gradle可以完美的結合這兩個功能,即進行了配置,也完美的進行jar包的下載。
接下來,我們來說說配置環境。
搭建Gradle環境的步驟如下:
1)進入Gradle官網https://gradle.org/下載軟件包。
2)解壓到指定目錄即完成安裝。
3)添加新環境變量GRADLE_HOME,值為你的安裝目錄,並為環境變量Path添加一項%GRADLE_HOME%\bin。
4)命令行下運行gradle -version,檢查安裝和配置是否成功。
如此簡單,環境搭建完成。
再說一下gradlew,我們在新建項目目錄下使用cmd輸入gradle wrapper。
在目錄下可以發現出現gradle新建的文件,其中gradlew.bat文件,就是windows上的可執行文件(但是不要雙擊哈,使用cmd中 gradlew命令執行)
那gradlew和gradle有什么區別呢?
gradle的版本會不斷的更新,大家開發的時候經常會遇到版本不一致,而gradlew可以算是在gradle外面加了一層包裝,當我們執行在上面執行gradle wrapper的時候,可以看到gradle-wrapper.properties文件中已經記錄了我們當前使用gradle的版本信息。這時候我們執行gradlew命令的時候,會根據配置信息來使用對應版本的gradle來進行構建,不一致則會下載。這樣可以保持gradle版本一致。
最后,介紹一些gradlew的命令。
gradlew -v 查看當前gradle,groovy,ant,jvm,os等版本信息
gradlew build 檢查依賴並編譯打包
gradlew build --info 編譯並打印日志信息
gradlew build --xtest 編譯並不運行測試文件
gradlew clean 清理工程目錄下build文件夾
gradlew tasks --all 查看所有任務
gradlew clean build --refresh -dependencies 強制更新最新依賴,清楚並構建
gradlew build --info --debug --stacktrace 調試模式並打印堆棧信息
gradlew assembleDebug 編譯並打Debug包(可用於開發環境)
gradlew assembleRelease 編譯並打Release包(可用於正式環境)
gradlew installRelease Release模式打包並安裝
gradlew uninstallRelease 卸載Release模式包
gradlew dependencies 依賴信息查看
gradlew dependencies --info 查看詳細的依賴信息
大概以上這些,歡迎補充。
PS:當依賴一個很大的第三方庫,出現某個庫錯誤的時候,又不知道是哪里的問題,可以用gradlew build --info --debug --stacktrace命令打印並排查堆棧信息。