如何将gradle函数从build.gradle移动到插件中?

时间:2015-03-20 22:52:14

标签: gradle

目前,我在多项目设置中的顶级build.gradle中定义了一些实用程序功能,例如:

def utilityMethod() {
    doSomethingWith(project) // project is magically defined
}

我想将此代码移动到一个插件中,这将使应用插件的项目中的utilityMethod可用。我怎么做?它是project.extension吗?

3 个答案:

答案 0 :(得分:3)

这似乎可以使用:

task HelloTask << {
    foo.sayHello("DOM")
}

c:\plugintest>gradle -q HelloTask
Hello DOM

然后在客户端build.gradle文件中,您可以执行以下操作:

{{1}}

https://docs.gradle.org/current/userguide/custom_plugins.html

答案 1 :(得分:2)

我最近实现了这一点,Github提供了一个完整的示例。

注射基本归结为

target.ext.utilityMethod = SomeClass.&utilityMethod

<强>请注意:
此方法可能与其他插件冲突,因此您应该考虑是否使用静态导入

基于Answer 23290820

答案 2 :(得分:-1)

插件并不是要提供常用方法,而是任务

说到扩展,它们应该用于收集应用插件的输入:

  

大多数插件需要从构建脚本中获取一些配置。   执行此操作的一种方法是使用扩展对象。

更多详情here

看看彼得的answer,使用通过ext进行的闭包可能就是你想要的。