gradle入門(1-8)gradle 的依賴查看、依賴排除和指定版本(需要驗證!)


一、依賴查看 gradle dependencies

在gradle dependencies輸出會有如下幾種標記:

1、版本 : 唯一的依賴。

2、版本():還存在該庫其他版本的依賴或者間接依賴,並且默認選擇()所標注的版本。

3、版本1->版本2(*):還存在該庫其他版本的依賴或者間接依賴,並且選擇 版本2。

二、依賴排除

1、transitive = true

transitive dependencies 指 依賴的依賴,即 “間接依賴”
compile('com.meituan.android.terminus:library:6.6.1.16@aar'){
   transitive = true
   exclude module: 'hotel_model'
   exclude module: 'base_model'
}
@aar只下載該aar包,而不下載該aar包所依賴的其他包
如果想使用@aar的前提下還能下載其依賴庫,則需要添加transitive=true的條件。

2、排除 transitive dependencies

通過configuration或者dependency可以除去 transitive dependencies:
build.gradle
configurations {
   compile.exclude module: 'commons'
   all*.exclude group: 'org.gradle.test.excludes', module: 'reports'
}

dependencies {
   compile("org.gradle.test.excludes:api:1.0") {
     exclude module: 'shared'
   }
}
如果在configuration中定義一個exclude,那么所有依賴的transitive dependency (指定的)都會被去除。
定義exclude時候,或只指定group, 或只指定module名字,或二者都指定。
不是所有的transitive dependency 都可以被去除的,如:runtime時用到的。
一般來說,runtime時候用不到的,或者目標環境及平台已經包含該依賴的可以執行exclude去除。

那exclude選per-dependency還是per-configuration?
大多數情況都選用per-configuration,下面是一些使用exclude的典型場合:
* 有licensing問題
* 從遠程倉庫上無法獲取到依賴
* runtime時候用不到
* 有版本沖突

其中,exclude module: 'base_model' 和 exclude group:'com.name.group' module:'base_model' 的作用是完全一樣的。

三、強制指定依賴版本

1、force=true

compile('com.squareup.okhttp:okhttp-mt:2.5.0') {
     force = true
}
如我們在依賴okhttp的時候很可能發生沖突,就比如依賴的依賴中也包含了okhttp,這種場合下,就會產生版本沖突的問題,
加上force = true表明的意思就是即使在有依賴庫版本沖突的情況下堅持使用被標注的這個依賴庫版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM