如何在编写目标时使用/引用 gradle 插件属性?
How to use / refer gradle plugin properties in writing goals?
假设我想使用 Javadoc
gradle 插件中的 destinationDir
property。我有文档,其中只是说 属性 是:
File destinationDir
如何使用这些信息?
javadoc << {
FileTree docFilesTree = fileTree(dir: 'resources/doc-files')
File destinationDir
copy {
from docFilesTree
to destinationDir
}
}
我收到一个错误:
No signature of method:
org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated.to() is
applicable for argument types: (null) values: [null]
显然也意味着声明与 groovy 中的初始化不同:)
但是如何使用这个 属性 否则呢?
更新
好的,如果我这样做:
javadoc << {
FileTree docFilesTree = fileTree(dir: 'resources/doc-files')
copy {
from docFilesTree
into destinationDir
}
}
它不发誓但也不复制任何东西。
更新 2
实际上回答了明确的问题:引用插件属性,应该只引用它的变量名。但是为了精确起见,我想知道是否存在任何条件?是否可以仅在 javadoc << {}
内引用 destinationDir
?或者在添加插件后可以在 build.gradle
文件的任何地方引用它?
May be it is possible to refer destinationDir only inside javadoc <<
{}? Or it is possible to refer it inside any place in build.gradle
file once plugin is added?
正如我在评论中所写,destinationDir
是在任务上定义的,而不是在插件上定义的,因此您可以在任何地方引用它:
javadoc.destinationDir
它在 << {}
中有效,因为操作 {}
是一个闭包。如果闭包在自身内部找不到 属性,它会在 delegate
中搜索它,然后在 owner
中搜索它。在这种情况下,委托被设置为任务本身。这实际上是 groovy 东西。
假设我想使用 Javadoc
gradle 插件中的 destinationDir
property。我有文档,其中只是说 属性 是:
File destinationDir
如何使用这些信息?
javadoc << {
FileTree docFilesTree = fileTree(dir: 'resources/doc-files')
File destinationDir
copy {
from docFilesTree
to destinationDir
}
}
我收到一个错误:
No signature of method: org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated.to() is applicable for argument types: (null) values: [null]
显然也意味着声明与 groovy 中的初始化不同:)
但是如何使用这个 属性 否则呢?
更新
好的,如果我这样做:
javadoc << {
FileTree docFilesTree = fileTree(dir: 'resources/doc-files')
copy {
from docFilesTree
into destinationDir
}
}
它不发誓但也不复制任何东西。
更新 2
实际上回答了明确的问题:引用插件属性,应该只引用它的变量名。但是为了精确起见,我想知道是否存在任何条件?是否可以仅在 javadoc << {}
内引用 destinationDir
?或者在添加插件后可以在 build.gradle
文件的任何地方引用它?
May be it is possible to refer destinationDir only inside javadoc << {}? Or it is possible to refer it inside any place in build.gradle file once plugin is added?
正如我在评论中所写,destinationDir
是在任务上定义的,而不是在插件上定义的,因此您可以在任何地方引用它:
javadoc.destinationDir
它在 << {}
中有效,因为操作 {}
是一个闭包。如果闭包在自身内部找不到 属性,它会在 delegate
中搜索它,然后在 owner
中搜索它。在这种情况下,委托被设置为任务本身。这实际上是 groovy 东西。