IDEA同步时如何触发任务?

问题描述 投票:0回答:1

我想在用户在 IDEA 中打开我的项目或按下“同步”按钮后立即执行某些任务:

似乎没有可靠的方法来做到这一点,因为 IDEA 没有触发任何任务。我是这样找到的:

// build.gradle
// I have nothing in this file except things below
tasks.create("asd") {
    doLast {
        println("ASD")
    }
    doFirst {
        println("ASD")
    }
}
tasks.all { Task task ->
    task.dependsOn(tasks.named("asd").get())
}

按下“同步”按钮后,除了以下内容外,我没有任何输出:

BUILD SUCCESSFUL in 118ms

我发现的最佳解决方法 - 检查系统属性并修改 Gradle 启动参数以触发我的任务(如果 IDEA 添加了属性):

class LocalPropertiesPlugin implements Plugin<Project> {
    @Override
    public void apply(@NotNull Project target) {
        Idea.scheduleTaskAfterIDEASync(target, "mytask");
    }

    private static void scheduleTaskAfterIDEASync(Project target, String taskName) {
        if (isIdeaSync()) modifyGradleStartParameters(target, taskName);
    }

    private static void modifyGradleStartParameters(Project target, String taskName) {
        final StartParameter startParameter = target.getGradle().getStartParameter();
        System.out.println(startParameter);
        final List<TaskExecutionRequest> taskRequests = new ArrayList<>(startParameter.getTaskRequests());
        taskRequests.add(new DefaultTaskExecutionRequest(List.of(taskName)));
        startParameter.setTaskRequests(taskRequests);
    }

    private static boolean isIdeaSync() {
        return Boolean.parseBoolean(System.getProperty("idea.sync.active", "false"));
    }
}

这看起来并不是一个好的、可靠的解决方案。如何正确地做到这一点?

gradle intellij-idea
1个回答
0
投票

如果在 IDEA 中的 Gradle 工具窗口中右键单击任务,则可以将其设置为在项目同步之前或之后运行。请参阅 IDEA 文档

© www.soinside.com 2019 - 2024. All rights reserved.