【发布时间】:2018-05-18 13:33:55
【问题描述】:
我们有一个 Gradle 构建,其中包含一个带有一些自定义插件的 buildSrc。这些插件适用于其他插件。例如,我们的插件应用com.android.tools.build:gradle。对于注释处理,该库需要在编译期间位于 Gradle 的类路径中。所以,把它放在我们的主要build.gradle 作品中:
buildscript {
repositories {
google()
}
dependencies {
classpath "com.android.tools.build:gradle:$gToolsVersion"
}
}
但是,这意味着用户要应用此插件,他们必须 (1) 应用我们的插件并 (2) 添加 buildscript 样板文件。看来这应该是不必要的。我们还可以在我们的插件中添加一个project.buildscript 块,但这似乎也没有必要,并且由于这个错误是有问题的:https://developer.android.com/studio/build/gradle-plugin-3-0-0.html?utm_source=android-studio#known_issues。
我将com.android.tools.build:gradle 依赖添加到buildSrc/build.gradle 作为runtime 依赖。看起来应该可行:我认为这告诉 Gradle,为了运行我的插件,该库(及其依赖项)需要位于类路径中。但是,gradle buildEnvironment(以及我们的构建失败的事实)清楚地表明情况并非如此。
所以,问题:
-
buildSrc/build.gradle中指定的runtime依赖项与常规 build.gradle 中buildscript块中指定的classpath依赖项有什么区别? - 我该如何安排,以便用户可以从
buildSrc应用插件,并且不还必须将buildscript块添加到他们的build.gradle?
【问题讨论】:
标签: gradle android-gradle-plugin