Gradle讀取倉庫配置文件的優先級
Gradle 在讀取倉庫配置文件(如 settings.gradle 或 build.gradle 中定義的 repositories)時,遵循一定的優先級規則。以下是 Gradle 讀取倉庫配置文件的優先級順序:
1. 項目級配置文件
settings.gradle:- 這是 Gradle 項目的入口文件,定義了項目的模塊結構和倉庫配置。
- 優先級最高,Gradle 會首先讀取此文件中的倉庫配置。
build.gradle:- 項目根目錄下的
build.gradle文件中的repositories塊。 - 優先級次之,Gradle 會在此文件中查找倉庫配置。
- 項目根目錄下的
2. 子模塊配置文件
- 如果項目是多模塊的,每個子模塊的
build.gradle文件中的repositories塊也會被讀取。 - 子模塊的配置會覆蓋父模塊的配置(如果存在沖突)。
3. Gradle 用戶全局配置
init.gradle:- 位于
~/.gradle/init.gradle(或%USERPROFILE%\\.gradle\\init.gradle)。 - 此文件中的倉庫配置會被應用到所有 Gradle 項目。
- 優先級低于項目級配置。
- 位于
gradle.properties:- 位于
~/.gradle/gradle.properties(或%USERPROFILE%\\.gradle\\gradle.properties)。 - 可以定義全局的倉庫鏡像或代理設置。
- 位于
4. Gradle 默認配置
- 如果沒有顯式配置倉庫,Gradle 會使用默認的
mavenCentral()作為倉庫。 - 默認配置的優先級最低。
5. 依賴解析順序
- 當 Gradle 解析依賴時,會按照以下順序檢查倉庫:
- 本地緩存(
~/.gradle/caches)。 - 本地 Maven 倉庫(
~/.m2/repository)。 - 項目配置的遠程倉庫(按
repositories塊中的順序)。 - 全局配置的遠程倉庫(如
init.gradle中定義的)。
- 本地緩存(
示例配置
以下是一個典型的 settings.gradle 和 build.gradle 配置示例:
settings.gradle
pluginManagement {
repositories {
gradlePluginPortal() // Gradle 插件倉庫
google() // Google 倉庫
mavenCentral() // Maven 中央倉庫
}
}
build.gradle
repositories {
mavenLocal() // 本地倉庫
mavenCentral() // Maven 中央倉庫
google() // Google 倉庫
maven { url 'https://jitpack.io' } // 自定義倉庫
}
總結
Gradle 讀取倉庫配置文件的優先級為:
settings.gradle→ 2. 項目級build.gradle→ 3. 子模塊build.gradle→ 4. 全局配置(init.gradle或gradle.properties)→ 5. 默認配置。
如果需要調試倉庫配置,可以使用以下命令查看依賴解析詳情:
gradlew dependencies --scan

浙公網安備 33010602011771號