您正在撰写Gradle自定义插件。
1)我在我的插件中创建了一个Task,我希望在调用任何编译任务时调用该任务。
说用户可以调用compileJava,compileJava等
OR 2)当用户调用gradle war任务时我可以调用吗?而不是gradle warMyFiles
我想在任何这些编译任务上调用我的插件
我通常会将任务设置为我的插件
... CompileMyFilesTask compileMyFiles = project.tasks.add(COMPILE_MYFILES_TASK_NAME,CompileMyFilesTask.class) compileMyFiles.dependsOn(WarPlugin.WAR_TASK_NAME)//或JavaPlugin.COMPILE _... compileMyFiles.description =“编译MyFiles” compileMyFiles.group =“MyFiles” ...
答案 0 :(得分:0)
我建议您查看内部插件的gradle源代码,例如Java插件(可以在GRADLE_HOME/src/org/gradle/api/plugins/JavaBasePlugin.java
找到)
这是从那里借来的想法。此代码使项目中的所有编译任务都取决于您的自定义任务:
import org.gradle.api.Task;
import org.gradle.api.tasks.compile.AbstractCompile;
...
final Task yourCustomTask = ...
project.getTasks().withType(AbstractCompile.class, new Action<Task>(){
@Override
public void execute(Task compileTask){
compileTask.dependsOn(yourCustomeTask);
}
});
注意:如果您的自定义任务也是AbstractCompile
类型,则您需要在循环中将其排除以避免循环依赖。
对于战争任务,你目前的做法似乎很好。