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 的仓库可以通过调用 RepositoryHandler API 上相应的方法指定为 Maven 或 Ivy 仓库

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"
    }
}

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