我正在尝试了解Gradle中的buildscript {}
块是如何工作的。
我已经了解到,当引用外部插件时,应该使用它内部的repositories {}
块:
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'
}
}
apply plugin: 'com.jfrog.bintray'
但我不明白,当buildscript {}
块中没有repositories {}
块时,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时出现了相同的行为。
2条答案
按热度按时间hc2pp10m1#
它确实会抛出错误...
使用Gradle 7.1的上述示例,您可以获得
eaf3rand2#
看起来Gradle在
buildscript.repositories
中隐式包含了gradlePluginPortal()
。gradlePluginPortal()
的计算结果为https://plugins.gradle.org/m2。您可以通过更改
在您的
build.gradle
中,例如请注意,Gradle的错误消息显示它在https://plugins.gradle.org/m2中进行了搜索,尽管您的
buildscript.repositories
中并没有显式地包含该内容。