我试图在可重用文件中排除常见的Gradle任务。这是一个build-root.gradle文件的摘录:
buildscript {
// Repository declaration
ext {
isSnapshot = version.endsWith("-SNAPSHOT")
repos = {
def mavenRepo = { repoName, repoUrl ->
maven {
credentials {
username System.env.<some env var>
password System.env.<some env var>
}
name repoName
url repoUrl
}
}
mavenLocal()
mavenRepo('repo1', 'https://repo1.url')
mavenRepo('repo2', 'https://repo2.url')
mavenRepo('repo3', 'https://repo3.url')
}
}
// Versions and libraries declaration
ext {
versions = [
... some stuff
// Gradle
gradleRelease : '2.8.1',
... more stuff
]
libs = [
... some stuff
// Gradle
gradleRelease : "net.researchgate:gradle-release:$versions.gradleRelease",
... more stuff
]
}
repositories repos
dependencies {
classpath libs.gradleRelease
}
apply plugin: 'net.researchgate.release'
}
... more common stuff
这个想法是让子项目从该文件中应用并从中获取所有好处。
在“应用插件”行上,出现以下错误->找不到ID为'net.researchgate.release'的插件。
我打印了libs.gradleRelease字符串,看起来不错:net.researchgate:gradle-release:2.8.1
我们目前正在使用Gradle 5.2.1,但我也尝试了6.0.1-同样的错误。有什么想法为什么找不到插件?顺便说一句,这不是该特定插件专用的,我尝试了其他插件,但仍然收到相同的错误。
最佳答案
拉扯我剩下的头发并将头撞在墙上后,我碰到了这个=> https://discuss.gradle.org/t/how-do-i-include-buildscript-block-from-external-gradle-script/7016
@Peter_Niederwieser的相关评论:
“第二,不支持将构建脚本块外部化为脚本插件。(这是一个棘手的问题,无法想到实现此问题的好方法。)您可能必须忍受一些重复,至少对于请记住,项目的“buildscript”块中指定的依赖项对所有子项目都是可见的,因此,只要不需要脚本插件中可用的依赖项,您只需在根项目的构建中声明它们脚本。”
这正是我想要做的。我不会在这里骂人...
关于gradle - Gradle找不到在buildscript中声明的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59648336/