[英]Gradle dependencies: What's the difference between compile project and compile name?
[英]Gradle dependencies difference between compile, apk project, compile project,provided,implementation project
Gradle依賴關系的區別。
compile
apk project
compile project
provided project
implementation
我的問題是
compile
, apk project
, compile project
, provided project
什么區別?
這里有兩個獨立的事情要討論:依賴配置和依賴源。
依賴配置
配置有助於定義依賴關系的傳遞性,這反過來消除了必須發現和指定您自己的項目/庫所需的庫的痛苦,包括它們自動包含它們。 gradle中的配置概念與Maven的范圍非常相似:
compile
:編譯依賴項在項目的所有類路徑中都可用。 此外,這些依賴項將傳播到依賴項目。 運行時通常需要編譯時依賴項。 apk
:定義運行時依賴項。 在編譯時不需要具有此作用域的依賴項,但它將用於執行。 這意味着您可以在編譯時節省時間,並在項目實際運行時仍具有依賴性。 這是何時使用apk依賴項的一個很好的例子。 provided
:這意味着此依賴項在運行時環境中可用。 因此,此范圍僅在編譯和測試類路徑中可用,並且不可傳遞。 它不支持在Android項目,但您可以通過所討論定義自己的配置解決辦法是在這里 。 您可以在Android上遇到更多配置,例如testCompile
,它允許您指定僅用於測試的編譯時依賴項,比如您想在測試中使用junit,然后您將執行以下操作:
testCompile 'junit:junit:4.12'
依賴性來源
一旦了解了可用的配置,就需要指定實際的依賴關系。 依賴關系可能是內部的或外部的,您可能依賴於您正在處理的另一個庫,以及公共庫。 這是project
關鍵字的來源,允許您指定對內部模塊或庫的依賴關系。 通過將依賴項定義為compile project
,您將該模塊或庫添加為compile project
的傳遞依賴項。
假設您有一個包含三個模塊( producer
, consumer
和shared
)的項目messages
,項目結構將如下所示:
messages/
build.gradle
settings.gradle
consumer/
build.gradle
producer/
build.gradle
shared/
build.gradle
現在假設consumer
和producer
都以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'
}
總而言之,它是配置和源的組合,使您能夠將依賴關系聲明為compile
, compile project
, apk project
等等!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.