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

在build.Gradle中使用自定义Gradle插件的多种方法,gradle,build.gradle,Gradle,Build.gradle,我已经创建了一个简单的插件来说明使用定制Gradle插件通过插件扩展公开的DSL的各种方法(似乎有效)。例如,下面的插件定义和类 class GreetingPlugin implements Plugin<Project> { void apply(Project project) { // Add the 'greeting' extension object project.extensions.create("greeting", Gr

我已经创建了一个简单的插件来说明使用定制Gradle插件通过插件扩展公开的DSL的各种方法(似乎有效)。例如,下面的插件定义和类

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'
}
class GreetingPlugin实现插件{
无效申请(项目){
//添加“问候语”扩展对象
project.extensions.create(“问候语”,问候语)
//添加使用配置的任务

project.task('hello')正如Opal所说,所有4种方法都很好,这取决于您对可读性的要求。如果您需要配置的内容比消息多,那么使用闭包的配置块可能更方便

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


您可以在此处查看:

所有方法都很好,它们只是以不同的方式(通过不同的机制)进行评估。在某些情况下,传递封装配置的闭包更方便、更直观。