public static void runCustomTask(@NotNull Project project,
                                   @NotNull @Nls String executionName,
                                   @NotNull Class<? extends Task> taskClass,
                                   @NotNull String projectPath,
                                   @NotNull String gradlePath,
                                   @Nullable String taskConfiguration,
                                   @NotNull ProgressExecutionMode progressExecutionMode,
                                   @Nullable TaskCallback callback,
                                   @NotNull Set<Class<?>> toolingExtensionClasses) {
    String taskName = taskClass.getSimpleName();
    String taskType = taskClass.getName();
    Set<Class<?>> tools = new HashSet<>(toolingExtensionClasses);
    tools.add(taskClass);
    tools.add(GsonBuilder.class);
    tools.add(ExternalSystemRtClass.class);
    tools.add(GradleToolingExtensionClass.class);
    tools.add(GradleToolingExtensionImplClass.class);
    String initScript = GradleInitScriptUtil.loadTaskInitScript(gradlePath, taskName, taskType, tools, taskConfiguration);
    runCustomTaskScript(project, executionName, projectPath, gradlePath, progressExecutionMode, callback, initScript, taskName);
  }
public static void runCustomTask(@NotNull Project project,
                                   @NotNull @Nls String executionName,
                                   @NotNull Class<? extends Task> taskClass,
                                   @NotNull String projectPath,
                                   @NotNull String gradlePath,
                                   @Nullable String taskConfiguration,
                                   @NotNull ProgressExecutionMode progressExecutionMode,
                                   @Nullable TaskCallback callback,
                                   @NotNull Set<Class<?>> toolingExtensionClasses)