当没有配置存储库时,Gradle 在哪里查找 buildscript 依赖项?

时间:2021-07-07 14:03:09

标签: gradle

我正在尝试了解 buildscript {} 块在 Gradle 中的工作原理。

我知道在引用外部插件时应该使用其中的 repositories {} 块:

buildscript {
    repositories {
        gradlePluginPortal()
    }
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'
    }
}

apply plugin: 'com.jfrog.bintray'

但是当 repositories {} 块中没有 buildscript {} 块时,我不明白 Gradle 在哪里查找依赖项。如果我从上面的例子中删除它,我仍然能够在没有错误的情况下构建我的项目:

buildscript {
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'
    }
}

apply plugin: 'com.jfrog.bintray'

在这种情况下,Gradle 不应该抛出错误吗?

这是我的完整 build.gradle 文件:

buildscript {
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'
    }
}

plugins {
    id 'java'
}

apply plugin: 'com.jfrog.bintray'

group 'it.foo'
version '1.0-SNAPSHOT'

我在 Gradle 7.1.1 上运行这个 Gradle 文件,但我在 Gradle 6.1.1 上有相同的行为。

1 个答案:

答案 0 :(得分:1)

它确实抛出了一个错误...

在 Gradle 7.1 中完全使用上面的示例

Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'norepo'.
> Could not resolve all artifacts for configuration ':classpath'.
   > Cannot resolve external dependency com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5 because no repositories are defined.
     Required by:
         project :