Вызов пользовательской задачи Gradle при любом выполнении компиляции - PullRequest
0 голосов
/ 08 сентября 2011

Привет, я пишу пользовательский плагин Gradle.

1) Я создаю задачу в своем плагине и хочу, чтобы эта задача вызывалась при вызове любой задачи компиляции.

скажемпользователь может вызывать compileJava, compileJava и т. д.

ИЛИ 2) Могу ли я позвонить, когда пользователь запускает задачу Gradle War.вместо gradle warMyFiles

Я хочу вызывать мои плагины для выполнения любой из этих задач компиляции

Обычно я устанавливаю задачу в свой плагин следующим образом

... CompileMyFilesTaskcompileMyFiles = project.tasks.add (COMPILE_MYFILES_TASK_NAME, CompileMyFilesTask.class) compileMyFiles.dependsOn (WarPlugin.WAR_TASK_NAME) // или JavaPlugin.COMPILE _... compileMyFiles.description = "Compile MYFILES" compileMyFiles.group = "MYFILES" ...

1 Ответ

0 голосов
/ 09 сентября 2011

Я советую вам взглянуть на исходный код 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, вам нужно исключить ее в цикле, чтобы избежать циклическогозависимости.

Для военного задания ваш нынешний подход кажется хорошим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...