1. 程式人生 > >Gradle 3.0 多層依賴

Gradle 3.0 多層依賴

A --> B  -->  C  --D

gradle 3.0依賴有所更新,遇到的問題是依賴沒有傳遞

gradle3.0或者以上版本3.0之前(deprecated)說明作用
implementationcompilegradle升級到3.0之後,新增了 implementation, 而compile 方式被標記為了deprecated, compile 在3.0之後仍然可以使用,但是 gradle 官方說會在 gradle 後續的某次重要升級後變為不可用.如果我們使用了implementation方式來依賴專案的話,那麼這個庫就在編譯時期,只對當前的module可見,對其他的module不可見,但是在執行使其是可見的,這種方式的好處是可以顯著減少 build專案的時間,因為假如該依賴庫有介面或者程式碼變動,那麼Gradle只會去重新編譯和它有直接依賴關係的module,也就是該庫不存在傳遞性
apicompile同上使用api方式來依賴專案或者庫的話,那麼這個庫,在編譯時期和執行時期都可以對其他module可見
compileOnlyprovided3.0之後版本,使用compileOnly來替代provided假如在專案中,對某些庫你只是想要在編譯時期使用,而在執行時期並不需要這個庫,你可以使用這種方式!
runtimeOnlyapk3.0之後,使用 runtinmeOnly來替代apkGradle 在執行時會將該庫新增到 build 的 output 中去

結論:implementation 不具備傳遞性,如果B使用implementation依賴C,則A找不到C

可以用API 或者compile,據說compile 以後就沒有了。