簡體   English   中英

Gradle依賴關系編譯,apk項目,編譯項目,提供,實現項目之間的區別

[英]Gradle dependencies difference between compile, apk project, compile project,provided,implementation project

Gradle依賴關系的區別。

 compile
 apk project 
 compile project
 provided project
 implementation

我的問題是

compileapk projectcompile projectprovided project什么區別?

這里有兩個獨立的事情要討論:依賴配置和依賴源。

依賴配置

配置有助於定義依賴關系的傳遞性,這反過來消除了必須發現和指定您自己的項目/庫所需的庫的痛苦,包括它們自動包含它們。 gradle中的配置概念與Maven的范圍非常相似:

  1. compile :編譯依賴項在項目的所有類路徑中都可用。 此外,這些依賴項將傳播到依賴項目。 運行時通常需要編譯時依賴項。
  2. apk :定義運行時依賴項。 在編譯時不需要具有此作用域的依賴項,但它將用於執行。 這意味着您可以在編譯時節省時間,並在項目實際運行時仍具有依賴性。 是何時使用apk依賴項的一個很好的例子。
  3. provided :這意味着此依賴項在運行時環境中可用。 因此,此范圍僅在編譯和測試類路徑中可用,並且不可傳遞。 它不支持在Android項目,但您可以通過所討論定義自己的配置解決辦法是在這里

您可以在Android上遇到更多配置,例如testCompile ,它允許您指定僅用於測試的編譯時依賴項,比如您想在測試中使用junit,然后您將執行以下操作:

testCompile 'junit:junit:4.12'

依賴性來源

一旦了解了可用的配置,就需要指定實際的依賴關系。 依賴關系可能是內部的或外部的,您可能依賴於您正在處理的另一個庫,以及公共庫。 這是project關鍵字的來源,允許您指定對內部模塊或庫的依賴關系。 通過將依賴項定義為compile project ,您將該模塊或庫添加為compile project的傳遞依賴項。

假設您有一個包含三個模塊( producerconsumershared )的項目messages ,項目結構將如下所示:

messages/
    build.gradle
    settings.gradle
    consumer/
        build.gradle
    producer/
        build.gradle
    shared/
        build.gradle

現在假設consumerproducer都以json格式存儲消息,並且您希望將google-gson用於此目的。 假設兩個項目都有一些共同的源代碼,它們依賴於您的shared模塊。 然后, consumer的build.gradle可以定義以下依賴項:

dependencies {
   // Internal dependency to project shared
   compile project (':shared')

   // External dependency to publicly available library, 
   // through public repositories such as jcenter() or mavencentral()
   compile 'com.google.code.gson:gson:1.7.2'
}

總而言之,它是配置的組合,使您能夠將依賴關系聲明為compilecompile projectapk project等等!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM