Gradle:无法在构建脚本中获取范围内的插件类

时间:2016-10-25 07:40:15

标签: gradle groovy gradle-plugin

过去几天我一直在创建自己的gradle插件(部分用于学习,部分用于清理我已经存放的一些gradle构建脚本),但是我遇到了一个我无法解决的问题弄清楚如何解决。在我的插件jar中有一个名为me.alxandr.gradle.bintray.maven.MavenPackage的接口,但是当我尝试导入它时,我收到一条错误消息,说它无法找到。这真的很奇怪,因为插件显然正在运行(我看到它的输出,并且它的任务正在注册)。

目前我已经做了一个黑客来解决这个问题:

project.ext.MavenPackage = MavenPackage

这只会使MavenPackage在buildscript中成为一个可用的名称,但是我没有任何编辑器支持,因为它完全是动态的。有什么方法可以(从我的插件)获取buildcript在应用时导入包吗?就像MavenPublication在范围内而不需要导入它一样。如果没有,为什么我不能从我的插件包中导入类?

整个源代码位于https://github.com/Alxandr/gradle-utils。你可以在这里看到一个尝试:https://github.com/Alxandr/gradle-utils/blob/master/gradle/publish.gradle#L1。当前代码按原样运行(上面解释了hack),但我只是想找到一种更好的方法来实现这一点。

1 个答案:

答案 0 :(得分:0)

要在Gradle脚本中使用插件中的类,必须将插件JAR添加到 buildscript 类路径

以下是如何做到这一点:

buildscript {
    repositories { /* where to get your plugin jar from, e.g. mavenLocal() */ }
    dependencies {
        classpath 'some_group:me.alxandr.plugin:1.0.0'
    }
}
import me.alxandr.gradle.bintray.maven.MavenPackage

您可以在Gradle用户指南中找到有关using external dependencies in your build script

的更多信息