Stories

Detail Return Return

Gradle讀取倉庫配置文件的優先級 - Stories Detail

Gradle 在讀取倉庫配置文件(如 settings.gradlebuild.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 解析依賴時,會按照以下順序檢查倉庫:
    1. 本地緩存(~/.gradle/caches)。
    2. 本地 Maven 倉庫(~/.m2/repository)。
    3. 項目配置的遠程倉庫(按 repositories 塊中的順序)。
    4. 全局配置的遠程倉庫(如 init.gradle 中定義的)。

示例配置

以下是一個典型的 settings.gradlebuild.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 讀取倉庫配置文件的優先級為:

  1. settings.gradle → 2. 項目級 build.gradle → 3. 子模塊 build.gradle → 4. 全局配置(init.gradlegradle.properties)→ 5. 默認配置。

如果需要調試倉庫配置,可以使用以下命令查看依賴解析詳情:

gradlew dependencies --scan

Add a new Comments

Some HTML is okay.