自定义插件中的默认操作
Default actions in custom plugins
我正在使用 gradle-api 在 Gradle 自定义插件中工作,需要设置一个始终执行的操作,例如配置任务。
我用这种方式创建了一些任务:
class MyTask extends DefaultTask {
@TaskAction
void myAction() throws Exception {
[my action code]
}
}
然后添加到项目中:
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.getTasks().create("myTask", MyTask.class)
}
}
...这些有效:当我明确调用 myTask 目标时,它会被执行,但我需要一个每次都执行的任务,即使没有明确调用也是如此。
如果你想在grable为运行时每次都执行代码,你可以直接将你的代码添加到apply
方法或者在块afterEvaluate
:
中
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.getTasks().create("myTask", MyTask.class)
// your code...
// or
project.afterEvaluate(proj -> {
// your code...
});
}
}
如果您需要将您的代码专门放在 task
中,那么您应该使您的任务 dependsOn
成为现有任务(该任务已经在 DAG - 有向无环图中注册)。例如:
MyTask task = Tproject.getTasks().create("myTask", MyTask.class);
project.getTasks().findByName("assembleDebug").dependsOn(task);
关于dependsOn
你可以在docs and this answer中看到。
已弃用:
此外,在旧版本Gradle中,您可以做到yourTask.execute()
,但现在已弃用。
终于找到方法了:
思路是把我的动作配置成一个配置。
我想有几种方法,但我喜欢这个:
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
final MyTask myTask = project.getTasks().create(
"myTask", MyTask.class
)
project.getConfigurations().create(
"myTask",
{
myTask.myMethod()
}
)
}
}
我正在使用 gradle-api 在 Gradle 自定义插件中工作,需要设置一个始终执行的操作,例如配置任务。
我用这种方式创建了一些任务:
class MyTask extends DefaultTask {
@TaskAction
void myAction() throws Exception {
[my action code]
}
}
然后添加到项目中:
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.getTasks().create("myTask", MyTask.class)
}
}
...这些有效:当我明确调用 myTask 目标时,它会被执行,但我需要一个每次都执行的任务,即使没有明确调用也是如此。
如果你想在grable为运行时每次都执行代码,你可以直接将你的代码添加到apply
方法或者在块afterEvaluate
:
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.getTasks().create("myTask", MyTask.class)
// your code...
// or
project.afterEvaluate(proj -> {
// your code...
});
}
}
如果您需要将您的代码专门放在 task
中,那么您应该使您的任务 dependsOn
成为现有任务(该任务已经在 DAG - 有向无环图中注册)。例如:
MyTask task = Tproject.getTasks().create("myTask", MyTask.class);
project.getTasks().findByName("assembleDebug").dependsOn(task);
关于dependsOn
你可以在docs and this answer中看到。
已弃用:
此外,在旧版本Gradle中,您可以做到yourTask.execute()
,但现在已弃用。
终于找到方法了:
思路是把我的动作配置成一个配置。 我想有几种方法,但我喜欢这个:
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
final MyTask myTask = project.getTasks().create(
"myTask", MyTask.class
)
project.getConfigurations().create(
"myTask",
{
myTask.myMethod()
}
)
}
}