在一個Android項目的build.gradle中,dependencies閉包中有以下四種形式的聲明:
compile 'com.android.support:appcompat-v7:22.2.1'
provided 'com.squareup.dagger:dagger-compiler:1.2.1'
compile files('libs/picasso-2.4.0.jar')
compile project(':androidPullToRefresh')
1,3,4本質(zhì)上是一樣的,區(qū)別在于:
1 是從repository(默認是jCenter())里下載一個依賴包進行編譯并打包
3 是從本地的libs目錄下尋找picasso-2.4.0.jar這個文件進行編譯并打包。類似的命令有compile fileTree(dir: 'libs', include: '*.jar')
——將libs目錄下所有jar文件進行編譯并打包。
4 是將另一個module(等同eclipse中的library)進行編譯并打包
至于provided,是提供給那些只編譯不打包場景的命令。就是,我在編譯的時候?qū)δ骋粋€jar文件有依賴,但是最終打包apk文件時,我不想把這個jar文件放進去,可以用這個命令。生成jar文件的時候,也不會打包provided的模塊。
推薦一本書 《gradle for android》
https://segmentfault.com/a/1190000004229002