Gradle 可以從一個或多個基於 Maven、Ivy 或扁平目錄格式的儲存庫解析本機或外部相依性。

預計在單一專案中使用的儲存庫在您的 build.gradle(.kts) 檔案中宣告

build.gradle.kts
repositories {
    mavenCentral()
    maven {
        url = uri("https://repo.spring.io/snapshot/")
    }
}
build.gradle
repositories {
    mavenCentral()
    maven {
        url = 'https://repo.spring.io/snapshot/'
    }
}

若要在您的 settings.gradle(.kts) 檔案中集中管理儲存庫宣告,請前往集中管理儲存庫宣告

宣告公開可用的儲存庫

開發軟體的組織可能希望利用公開二進制儲存庫來下載和使用公開可用的相依性。常見的公開儲存庫包括 Maven CentralGoogle Android 儲存庫。

Gradle 為這些廣泛使用的儲存庫提供內建的簡寫表示法。

dependency management shortcut repositories

在底層,Gradle 從簡寫表示法定義的公開儲存庫的各自 URL 解析相依性。所有簡寫表示法都可通過 RepositoryHandler API 取得。

或者,您可以明確指定儲存庫的 URL 以獲得更精細的控制。

Maven Central 儲存庫

Maven Central 是一個常見的儲存庫,用於託管開源程式庫,供 Java 專案使用。

若要為您的建置宣告 Maven Central 儲存庫,請將此新增至您的腳本

build.gradle.kts
repositories {
    mavenCentral()
}
build.gradle
repositories {
    mavenCentral()
}

Google Maven 儲存庫

Google 儲存庫託管特定於 Android 的產出物,包括 Android SDK。如需使用範例,請參閱相關的 Android 文件

若要宣告 Google Maven 儲存庫,請將此新增至您的建置腳本

build.gradle.kts
repositories {
    google()
}
build.gradle
repositories {
    google()
}

通過 URL 宣告自訂儲存庫

大多數企業專案都設置了一個僅在內部網路中可用的二進制儲存庫。內部儲存庫使團隊能夠發布內部二進制檔案、設置用戶管理和安全措施,並確保正常運行時間和可用性。

如果您想宣告 Gradle 未提供簡寫的公開可用儲存庫,指定自訂 URL 也很有幫助。

具有自訂 URL 的儲存庫可以指定為 Maven 或 Ivy 儲存庫,方法是調用 RepositoryHandler API 上可用的相應方法

build.gradle.kts
repositories {
    maven {
        url = uri("http://repo.mycompany.com/maven2")
    }
}
build.gradle
repositories {
    maven {
        url = "http://repo.mycompany.com/maven2"
    }
}

除了 httphttps 之外,Gradle 還支援其他協議,例如 filesftps3 用於自訂 URL。

如需完整涵蓋範圍,請參閱關於支援的儲存庫類型章節。

您也可以通過使用 ivy { } 儲存庫來定義自己的儲存庫佈局,因為它們在模組如何在儲存庫中組織方面非常靈活

build.gradle.kts
repositories {
    ivy {
        url = uri("http://repo.mycompany.com/repo")
    }
}
build.gradle
repositories {
    ivy {
        url = "http://repo.mycompany.com/repo"
    }
}

宣告多個儲存庫

您可以定義多個儲存庫來解析相依性。如果某些相依性僅在一個儲存庫中可用,而在另一個儲存庫中不可用,則宣告多個儲存庫會很有幫助。

您可以混合參考章節中描述的任何類型的儲存庫。

build.gradle.kts
repositories {
    mavenCentral()
    maven {
        url = uri("https://repo.spring.io/release")
    }
    maven {
        url = uri("https://repository.jboss.org/maven2")
    }
}
build.gradle
repositories {
    mavenCentral()
    maven {
        url = "https://repo.spring.io/release"
    }
    maven {
        url = "https://repository.jboss.org/maven2"
    }
}

儲存庫宣告的順序決定了 Gradle 在解析期間搜尋相依性的順序。如果 Gradle 在特定儲存庫中找到相依性的元數據,它將嘗試從同一個儲存庫下載該模組的所有產出物。

您可以了解更多關於相依性下載的內部運作原理。

外掛程式儲存庫

Gradle 使用不同的儲存庫集來解析 Gradle 外掛程式和解析專案相依性

  1. 外掛程式相依性:當解析建置腳本的外掛程式時,Gradle 使用一組不同的儲存庫來定位和載入所需的外掛程式。

  2. 專案相依性:當解析專案相依性時,Gradle 僅使用在建置腳本中宣告的儲存庫,並忽略外掛程式儲存庫。

預設情況下,Gradle 使用 Gradle 外掛程式入口網站來搜尋外掛程式

settings.gradle.kts
pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
}
settings.gradle
pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
}

然而,某些外掛程式可能會託管在其他儲存庫(公開或私有)中。若要包含這些外掛程式,您需要在建置腳本中指定其他儲存庫,以便 Gradle 知道在哪裡搜尋。

由於宣告儲存庫取決於外掛程式的套用方式,請參閱自訂外掛程式儲存庫,以取得關於為來自不同來源的外掛程式配置儲存庫的更多詳細資訊。