如何向Gradle中的任务添加扩展?

如何向Gradle中的任务添加扩展?,gradle,Gradle,创建Gradle插件时,您可以使用自己的扩展对象扩展DSL,但从文档中我看到,DefaultTask也实现了ExtensionAware接口 所以我想问: 如何向任务添加扩展 在什么情况下我必须使用它 您可以使用ext命名空间向任务添加额外属性。它通常用于用新的属性或方法丰富Gradle的域模型(如任务)。假设您想向任务添加一个额外属性myTask: task myTask { ext.myProp = 'hello world' doLast { print

创建Gradle插件时,您可以使用自己的扩展对象扩展DSL,但从文档中我看到,DefaultTask也实现了ExtensionAware接口

所以我想问:

  • 如何向任务添加扩展
  • 在什么情况下我必须使用它

  • 您可以使用
    ext
    命名空间向任务添加额外属性。它通常用于用新的属性或方法丰富Gradle的域模型(如任务)。假设您想向任务添加一个额外属性
    myTask

    task myTask {
        ext.myProp = 'hello world'
    
        doLast {
            println myProp
        }
    }
    
    assert myTask.myProp == 'hello world'
    myTask.myProp = 'new value'
    assert myTask.myProp == 'new value'
    

    您可以在这里看到,您可以在任务的上下文中直接访问和修改此属性。

    那么额外的属性是任务的扩展吗?我理解正确吗?当我创建自定义任务时,是否可以使用ExtensionContainer.create向其添加额外属性?