Gradle 需要知道从哪里下载项目中使用的依赖项。

例如,com.google.guava:guava:30.0-jre 依赖项可以从公共 Maven Central 仓库 mavenCentral() 下载。Gradle 将从 Maven Central 找到并下载 guava 源代码 (以 jar 形式),并用它来构建项目。

您可以通过在 build.gradle(.kts) 文件中配置 repositories 块,为您的依赖项添加任意数量的仓库

build.gradle.kts
repositories {
    mavenCentral()  (1)
    maven {         (2)
        url = uri("https://company/com/maven2")
    }
    mavenLocal()    (3)
    flatDir {       (4)
        dirs("libs")
    }
}
1 公共仓库
2 私有/自定义仓库
3 本地仓库
4 文件位置
build.gradle
repositories {
    mavenCentral()  (1)
    maven {         (2)
        url = uri("https://company/com/maven2")
    }
    mavenLocal()    (3)
    flatDir {       (4)
        dirs "libs"
    }
}
1 公共仓库
2 私有/自定义仓库
3 本地仓库
4 文件位置

Gradle 可以从一个或多个仓库解析依赖项,这些仓库基于 Maven、Ivy 或扁平目录格式。

如果一个库在列出的多个仓库中都可用,Gradle 将简单地选择第一个。

声明公共仓库

构建软件的组织可能希望利用公共二进制仓库来下载和使用开源依赖项。流行的公共仓库包括 Maven CentralGoogle Android 仓库。

Gradle 为这些广泛使用的仓库提供了内置的简写符号

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

在底层,Gradle 从简写符号定义的公共仓库的相应 URL 解析依赖项。所有简写符号都通过 RepositoryHandler API 提供。

声明私有或自定义仓库

大多数企业项目都会建立一个仅在其内联网中可访问的二进制仓库。内部仓库允许团队发布内部二进制文件、管理用户和安全性,并确保正常运行时间和可用性。

指定自定义 URL 对于声明不太流行但公开可用的仓库很有用。具有自定义 URL 的仓库可以指定为 Maven 或 Ivy 仓库,通过调用 RepositoryHandler API 上可用的相应方法。

build.gradle.kts
repositories {
    maven {
        url = uri("https://maven-central.storage.apis.com")
    }
    ivy {
        url = uri("https://github.com/ivy-rep/")
    }
}
build.gradle
repositories {
    maven {
        url = uri("https://maven-central.storage.apis.com")
    }
    ivy {
        url = uri("https://github.com/ivy-rep/")
    }
}

声明本地仓库

Gradle 可以使用 本地 Maven 仓库 中可用的依赖项。

要将本地 Maven 缓存声明为仓库,请将其添加到您的构建脚本中

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

理解支持的仓库类型

Gradle 支持广泛的依赖项来源,包括格式和连接性。您可以从以下位置解析依赖项

这是一个快速快照

build.gradle
repositories {

    // Ivy Repository with Custom Layout
    ivy {
        url = 'https://your.ivy.repo/url'
        layout 'pattern', {
            ivy '[organisation]/[module]/[revision]/[type]s/[artifact]-[revision].[ext]'
            artifact '[organisation]/[module]/[revision]/[type]s/[artifact]-[revision].[ext]'
        }
    }

    // Authenticated HTTPS Maven Repository
    maven {
        url = 'https://your.secure.repo/url'
        credentials {
            username = 'your-username'
            password = 'your-password'
        }
    }

    // SFTP Repository
    maven {
        url = 'sftp://your.sftp.repo/url'
        credentials {
            username = 'your-username'
            password = 'your-password'
        }
    }

    // AWS S3 Repository
    maven {
        url = "s3://your-bucket/repository-path"
        credentials(AwsCredentials) {
            accessKey = 'your-access-key'
            secretKey = 'your-secret-key'
        }
    }

    // Google Cloud Storage Repository
    maven {
        url = "gcs://your-bucket/repository-path"
    }
}

下一步: 了解集中管理依赖 >>