Gradle:是否可以在 gradle 插件中定义 CustomTask 并从 build.gradle 中扩展 class?
Gradle: Is it possible to define a CustomTask in a gradle plugin and extend that class from within the build.gradle?
我正在实施自定义 gradle 插件,用 Java 编写。
我的自定义 gradle 插件有一个准备 yml 文件的任务。 yml 文件中包含各种块; gradle 任务名称和该任务的一些参数。
我的想法是,我的自定义 gradle 插件将提供一些任务(所有任务都扩展了一些具有预定义属性的通用基础)。然后,如果我的用户想从他们的 build.gradle 中定义一些新的自定义任务,他们可以在 build.gradle 中包含任务并在 yml 文件中引用。
到目前为止,这对于从插件内部定义的任务非常有效,我可以从 yml 文件中读取 gradle 任务,从 args 设置它们的属性并执行它们的操作。
我遇到的问题是弄清楚如何从实现 build.gradle 中支持自定义任务定义?最初,我试图从 build.gradle 内部扩展我的 CustomBaseTask,但我似乎看不到这一点,只有 ootb 类(Exec、DefaultTask 等)。
从 build.gradle 定义自定义任务并将预定义属性从我的 gradle 插件传递给它的最佳方法是什么?
Is it possible to define a CustomTask in a plugin & extend it from build.gradle
是的,绝对有可能。正如@Bjorn Vester 所说:确保您首先导入了 class。
Issue I'm having is figuring out how to support custom task definitions from the implementing build.gradle? Initially I was trying to extend my CustomBaseTask from inside the build.gradle but I dont seem to have visibility to this, just the ootb classes (Exec, DefaultTask etc..).
What would be the best approach for defining a custom task from build.gradle and passing predefined properties to it from my gradle plugin?
您可以像这样创建自定义任务:
public class SomeTask extends DefaultTask {
// your predefined attributes
@TaskAction
public void doAction() {
// do some stuff
}
}
然后在 build.gradle 文件中你可以扩展你的逻辑:
tasks.withType(SomeTask::class.java).configureEach {
// doLast,doFirst...etc. Extend your predefined logic
}
我正在实施自定义 gradle 插件,用 Java 编写。
我的自定义 gradle 插件有一个准备 yml 文件的任务。 yml 文件中包含各种块; gradle 任务名称和该任务的一些参数。
我的想法是,我的自定义 gradle 插件将提供一些任务(所有任务都扩展了一些具有预定义属性的通用基础)。然后,如果我的用户想从他们的 build.gradle 中定义一些新的自定义任务,他们可以在 build.gradle 中包含任务并在 yml 文件中引用。
到目前为止,这对于从插件内部定义的任务非常有效,我可以从 yml 文件中读取 gradle 任务,从 args 设置它们的属性并执行它们的操作。
我遇到的问题是弄清楚如何从实现 build.gradle 中支持自定义任务定义?最初,我试图从 build.gradle 内部扩展我的 CustomBaseTask,但我似乎看不到这一点,只有 ootb 类(Exec、DefaultTask 等)。
从 build.gradle 定义自定义任务并将预定义属性从我的 gradle 插件传递给它的最佳方法是什么?
Is it possible to define a CustomTask in a plugin & extend it from build.gradle
是的,绝对有可能。正如@Bjorn Vester 所说:确保您首先导入了 class。
Issue I'm having is figuring out how to support custom task definitions from the implementing build.gradle? Initially I was trying to extend my CustomBaseTask from inside the build.gradle but I dont seem to have visibility to this, just the ootb classes (Exec, DefaultTask etc..). What would be the best approach for defining a custom task from build.gradle and passing predefined properties to it from my gradle plugin?
您可以像这样创建自定义任务:
public class SomeTask extends DefaultTask {
// your predefined attributes
@TaskAction
public void doAction() {
// do some stuff
}
}
然后在 build.gradle 文件中你可以扩展你的逻辑:
tasks.withType(SomeTask::class.java).configureEach {
// doLast,doFirst...etc. Extend your predefined logic
}