Gradle配置詳解

gradle是一個基於jvm的富有突破性的構建工具,gradle正迅速成爲許多開源項目和前沿企業構建系統的選擇,同時也在挑戰遺留的自動化構建項目,Java世界中主要有三大構建工具:Ant、Maven和Gradle。經過幾年的發展,Ant幾乎銷聲匿跡、Maven也日薄西山,而Gradle的發展則如日中天。
優點:
1、一個像 ant 一樣,通用的靈活的構建工具
2、一種可切換的,像 maven 一樣的基於約定約定優於配置的構建框架
3、強大的多工程構建支持
4、強大的依賴管理(基於 ApacheIvy)
5、對已有的 maven 和 ivy 倉庫的全面支持
6、支持傳遞性依賴管理,而不需要遠程倉庫或者 pom.xml 或者 ivy 配置文件
7、ant 式的任務和構建是 gradle 的第一公民
8、基於 groovy,其 build 腳本使用 groovy dsl 編寫
9、具有廣泛的領域模型支持你的構建
類似於maven每個模塊都有一個pom文件,gradle每個modle也有一個gradle配置文件

  • gradle-wrapper

wrapper是對gradle的一層封裝,便於在團隊開發過程中統一Gradle構建的版本號。
gradle-wrapper.properties配置文件解析,

  1. distributionBase=GRADLE_USER_HOME 下載的gradle壓縮包解壓後存儲的主目錄
  2. distributionPath=wrapper/dists 相對於distributionBase解壓後的gradle壓縮包的路徑
  3. distributionUrl=https://services.gradle.org/distributions/gradle-5.4-bin.zip gradle發行版壓縮包的下載地址
  4. zipStoreBase=GRADLE_USER_HOME 同distributionBase,只不過是存zip壓縮包的。
  5. zipStorePath=wrapper/dists 同distributionPath,只不過是存zip壓縮包的。
  • settings.gradle

用於初始化以及工程樹配置的,放在根工程目錄下。

  • build.gradle主配置文件
  1. buildscript

buildscript中的聲明是gradle腳本自身需要使用的資源。可以聲明的資源包括依賴項、第三方插件、maven倉庫地址等

  1. allprojects

allprojects塊的repositories用於多項目構建,爲所有項目提供共同所需依賴包。而子項目可以配置自己的repositories以獲取自己獨需的依賴包。
buildscript和allprojects的作用和區別
buildscript中的聲明時gradle腳本自身需要使用的資源,就是說他是自己需要的資源,跟你這個大少爺其實並沒有什麼關係,而allprojects聲明的卻是你所有moudle所需使用的資源,就是說如果大少爺你的每個modle都需要用同一個第三方庫的時候,你可以在allprojects裏面聲明。

  1. ext

ext是自定義屬性,現在很多人都喜歡把所有關於版本的信息都利用ext放在另一個自己新建的gradle文件中集中管理

  1. repositories

顧名思義就是倉庫的意思啦,而jcenter()、maven()和google()就是託管第三方插件的平臺
jcenter()和mavenCentral()是Android Studio中Gradle插件使用的倉庫
Android Studio早期版本使用的是mavenCentral,從某個時候開始切換到jcenter了。
這是因爲jcenter在性能和佔存儲大小方面比mavenCentral更優:
jcenter是世界上最大的Java倉庫
jcenter通過CDN服務,使用的是https協議,安全性更高,而Android Studio 0.8版本mavenCentral使用的是http協議
jcenter是mavenCentral的超集,包括許多額外的倉庫
jcenter性能方面比mavenCentral更優
mavenCentral會自動下載很多與IDE相關的index,而這些用到的少,且不是必需

repositories {
    //mavenLocal()
    //maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    //jcenter()
  }

  1. apply

apply plugin: ‘xxx’ 應用二進制插件,jar包
apply from: ‘xxx’ 叫做應用腳本插件,可以是本地的,也可以是網絡存在的,如果是網絡上的話要使用HTTPURL
apply plugin: ‘java’
應用Java插 件之後,約定src/main/java目錄下是我們的源代碼存放位置,在編譯的時候也是編譯這個目錄下的Java源代碼文件。

  1. dependencies{}

首先第一句compile fileTree(include: [‘.jar’], dir: ‘libs’)*,這樣配置之後本地libs文件夾下的擴展名爲jar的都會被依賴,非常方便。
如果你要引入某個本地module的話,那麼需要用compile project(‘×××’)。
如果要引入網上倉庫裏面的依賴,我們需要這樣寫compile group:’com.squareup.okhttp3’,name:’okhttp’,version:’3.0.1’,當然這樣是最完整的版本,縮寫就把group、name、version去掉,然後以”:”分割即可。
compile ‘com.squareup.okhttp3:okhttp:3.0.1’

dependencies{

}
gradle 提供的依賴配置

名稱    繼承自    被哪個任務使用    意義
compile    -    compileJava    編譯時依賴
runtime    compile    -    運行時依賴
testCompile    compile    compileTestJava    編譯測試用例時依賴
testRuntime    runtime,testCompile    test    僅僅在測試用例運行時依賴
archives    -    uploadArchives    該項目發佈構件(JAR包等)依賴
default    runtime    -    默認依賴配置
但是到了gradle3.0以後build.gradle中的依賴默認爲implementation,而不是
之前的compile。另外,還有依賴指令api。
gradle 3.0中依賴implementation、api的區別:
其實api跟以前的compile沒什麼區別,將compile全部改成api是不會錯的;
而implementation指令依賴是不會傳遞的,也就是說當前引用的第三方庫僅限於本module內使用,其他module需要重新添加依賴才能用。
//指定預編譯.java文件的JDK版本,根據實際情況填寫
sourceCompatibility = 1.8
————————————————
原文鏈接:https://blog.csdn.net/qq_40388552/article/details/95939429

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章