我正在为一个多模块项目编写一些 gradle 插件。其中一些是引入任务,应视为复制任务。当然,他们会复制,但也会做一些其他的事情。
我的问题是一个更一般的问题。我是否必须编写自己的任务操作方法来调用超级任务操作?还是 gradle 自动调用超类的任务动作?要坚持复制任务:
class MyCopyTask extends Copy {
public MyCopyTask () {
super()
from "just/a/default/path"
into "another/default/path"
}
@TaskAction
def myCopy() {
super.copy()
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释 gradle 如何决定在执行阶段执行哪些方法。我是否需要“myCopy”方法,为什么需要或不需要?
每个具体的任务类都需要有一个用 注释的方法@TaskAction
,该方法会在任务执行时被 Gradle 调用。@TaskAction
不会调用带有注释的超级方法。
子类化具体的任务类型,例如Copy
很少需要/合适。与其实现诸如 之类的任务类型,不如MyCopyTask
考虑实现一个插件,该插件添加一个类型Copy
为 的任务,或一个不从其继承Copy
但project.copy()
在其任务操作(继承上的组合)内部调用的任务类型。
归档时间: |
|
查看次数: |
713 次 |
最近记录: |