Gradle 3.0 多層依賴
阿新 • • 發佈:2019-02-08
A --> B --> C --D
gradle 3.0依賴有所更新,遇到的問題是依賴沒有傳遞
gradle3.0或者以上版本 | 3.0之前(deprecated) | 說明 | 作用 |
---|---|---|---|
implementation | compile | gradle升級到3.0之後,新增了 implementation, 而compile 方式被標記為了deprecated, compile 在3.0之後仍然可以使用,但是 gradle 官方說會在 gradle 後續的某次重要升級後變為不可用. | 如果我們使用了implementation方式來依賴專案的話,那麼這個庫就在編譯時期,只對當前的module可見,對其他的module不可見,但是在執行使其是可見的,這種方式的好處是可以顯著減少 build專案的時間,因為假如該依賴庫有介面或者程式碼變動,那麼Gradle只會去重新編譯和它有直接依賴關係的module,也就是該庫不存在傳遞性 |
api | compile | 同上 | 使用api方式來依賴專案或者庫的話,那麼這個庫,在編譯時期和執行時期都可以對其他module可見 |
compileOnly | provided | 3.0之後版本,使用compileOnly來替代provided | 假如在專案中,對某些庫你只是想要在編譯時期使用,而在執行時期並不需要這個庫,你可以使用這種方式! |
runtimeOnly | apk | 3.0之後,使用 runtinmeOnly來替代apk | Gradle 在執行時會將該庫新增到 build 的 output 中去 |
結論:implementation 不具備傳遞性,如果B使用implementation依賴C,則A找不到C。
可以用API 或者compile,據說compile 以後就沒有了。