如何在编写目标时使用/引用gradle插件属性?

时间:2016-03-17 10:34:19

标签: gradle groovy javadoc

假设我希望使用Javadoc gradle插件中的destinationDir property。我有文档,它只是说有关属性:

File destinationDir

如何使用此信息?

javadoc << {

    FileTree docFilesTree = fileTree(dir: 'resources/doc-files')

    File destinationDir

    copy {
        from docFilesTree
        to destinationDir
    }
}

我收到错误:

  

没有方法签名:   org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated.to()是   适用于参数类型:( null)值:[null]

显然意味着声明与groovy中的初始化不同:)

但是如何使用这个属性呢?

更新

好的,如果我这样做:

javadoc << {

    FileTree docFilesTree = fileTree(dir: 'resources/doc-files')

    copy {
        from docFilesTree
        into destinationDir
    }    
}

它不会发誓但也不会复制任何东西。

更新2

实际上回答了明确的问题:要引用插件属性,应该只引用它的变量名。但是为了精确,我想知道是否存在任何条件?可以仅在destinationDir内引用javadoc << {}吗?或者,一旦添加了插件,就可以在build.gradle文件中的任何位置引用它?

1 个答案:

答案 0 :(得分:2)

  

可能只能在javadoc&lt;&lt;里面引用destinationDir   {}?或者可以在build.gradle中的任何位置引用它   文件一旦添加插件?

正如我在评论中所写destinationDir是在不在插件上的任务上定义的,所以你可以在任何地方引用它:

javadoc.destinationDir

它适用于<< {},因为操作{}是一个闭包。如果闭包在自身内部找不到属性,则会在delegate然后owner中搜索它。在这种情况下,委托被设置为任务本身。这实际上很时髦。