為 Gradle 專案宣告的每個相依性都適用於特定範圍。
例如,某些相依性應在編譯原始碼時使用,而其他相依性僅需要在執行時期可用
dependencies {
implementation("com.google.guava:guava:30.0-jre") // Needed to compile and run the app
runtimeOnly("org.slf4j:slf4j-simple:2.0.13") // Only needed at runtime
}
dependencies {
implementation("com.google.guava:guava:30.0-jre") // Needed to compile and run the app
runtimeOnly("org.slf4j:slf4j-simple:2.0.13") // Only needed at runtime
}
相依性配置是一種在專案中為不同目的定義不同相依性集合的方式。它們決定了相依性在建置過程的各個階段中如何以及何時使用。
配置是 Gradle 中相依性解析的基本組成部分。
了解相依性配置
Gradle 借助 Configuration 來表示相依性的範圍。每個配置都可以透過唯一的名稱來識別。
許多 Gradle 外掛程式會將預先定義的配置新增至您的專案。
Java Library 外掛程式用於定義產生 Java 函式庫的專案。此外掛程式新增了許多相依性配置。這些配置代表原始碼編譯、執行測試等所需的各種類別路徑
配置名稱 | 描述 | 用於 |
---|---|---|
|
編譯和執行時期都需要的相依性,並包含在發佈的 API 中。 |
宣告相依性 |
|
編譯和執行時期都需要的相依性。 |
宣告相依性 |
|
僅編譯時需要的相依性,不包含在執行時期或發佈中。 |
宣告相依性 |
|
僅編譯時需要的相依性,但包含在發佈的 API 中。 |
宣告相依性 |
|
僅在執行時期需要的相依性,不包含在編譯類別路徑中。 |
宣告相依性 |
|
編譯和執行測試所需的相依性。 |
宣告相依性 |
|
僅測試編譯時需要的相依性。 |
宣告相依性 |
|
僅執行測試時需要的相依性。 |
宣告相依性 |
相依性宣告配置
相依性宣告配置 (compileOnly
、implementation
、runtimeOnly
) 側重於根據相依性的用途(編譯時間、執行時期、API 暴露)來宣告和管理相依性
dependencies {
implementation("com.google.guava:guava:30.1.1-jre") // Implementation dependency
compileOnly("org.projectlombok:lombok:1.18.20") // Compile-only dependency
runtimeOnly("mysql:mysql-connector-java:8.0.23") // Runtime-only dependency
}
dependencies {
implementation("com.google.guava:guava:30.1.1-jre") // Implementation dependency
compileOnly("org.projectlombok:lombok:1.18.20") // Compile-only dependency
runtimeOnly("mysql:mysql-connector-java:8.0.23") // Runtime-only dependency
}
其他配置
還有其他類型的配置(例如 runtimeClasspath
、compileClasspath
、apiElements
、runtimeElements
),但它們不用於宣告相依性。
也可以建立自訂配置。自訂配置可讓您定義一組獨特的相依性,可用於特定目的,例如工具鏈或程式碼產生,與標準配置(例如 implementation
、testImplementation
)分開
val customConfig by configurations.creating
dependencies {
customConfig("org.example:example-lib:1.0")
}
configurations {
customConfig
}
dependencies {
customConfig("org.example:example-lib:1.0")
}
建立自訂配置有助於管理和隔離相依性,確保它們僅包含在相關的類別路徑和建置過程中。
檢視配置
dependencies
任務提供專案相依性的概觀。若要專注於有關單個相依性配置的資訊,請提供選用參數 --configuration
。
以下範例顯示 Java 專案 implementation
相依性配置中的相依性
$ ./gradlew -q app:dependencies --configuration implementation
------------------------------------------------------------
Project ':app'
------------------------------------------------------------
implementation - Implementation only dependencies for source set 'main'.
\--- com.google.guava:guava:30.0-jre
下一步: 了解宣告儲存庫 >>