在 build.gradle 中使用自定义 Gradle 插件的多种方式

Multiple ways of using custom Gradle plugins in build.gradle

参考 Gradle docs section 59.2,我创建了一个简单的插件来说明使用自定义 Gradle 插件的通过插件扩展公开的 DSL 的各种(看似可行的)方法。例如下面的插件定义和 class

class GreetingPlugin implements Plugin<Project> {
    void apply(Project project) {
        // Add the 'greeting' extension object
        project.extensions.create("greeting", GreetingPluginExtension)
        // Add a task that uses the configuration
        project.task('hello') << {
            println project.greeting.message
        }
    }
}

class GreetingPluginExtension {
    def String message = 'Hello from GreetingPlugin'
}

可以通过四种方式调用

正确和推荐的方法是什么?使用一种方式而不是另一种方式有什么影响吗?在那个简单的例子中,它们似乎都有效

正如Opal所说,4种方式都可以,看你对可读性的要求。如果你要配置的不仅仅是消息,那么使用闭包的配置块可能会更方便。

使用赋值运算符和省略它也有区别:使用赋值运算符时,您显式设置了一个 属性,而省略它意味着调用具有该名称的方法。在那种情况下,我更喜欢使用赋值运算符。

你可以看这里:http://groovy-lang.org/style-guide.html#_getters_and_setters