使用 IntelliJ SDK 创建自定义 运行 配置并在启动前部分添加构建任务

Creating a custom run configuration using IntelliJ SDK and adding Build task in Before launch section

我正在学习 IntelliJ IDEA SDK Run Configuration 部分中的教程。

按照教程,我将获得一个带有空 "Before launch" 部分的新配置面板。该部分是默认添加的。

我想默认指定一些目标,即至少在几个插件中完成的构建目标(见下图)

我正在尝试了解具体方法,但找不到任何相关示例或文档。

如何添加默认 build 任务?

您的 运行 配置(示例中的 DemoRunConfiguration)应该实现 RunProfileWithCompileBeforeLaunchOption。这个接口没有提供任何实现方法,所以这是一种标记。 build 任务将自动添加,无需额外步骤。

如何将我自己的任务添加到 before launch 部分?

您的 plugin.xml 应包含一行 stepsBeforeRunProvider

<stepsBeforeRunProvider implementation="com.MyBeforeRunProvider" id="myBeforeRun"/>

为此,您应该创建“运行 提供者之前”和“运行 任务之前”。

public class BeforeRunProvider extends BeforeRunTaskProvider<MyBeforeRunTask> {
    @Override
    public Key<MyBeforeRunTask> getId() {
        return Key.create("ThisIsId");
    }

    @Override
    public String getName() {
        return "Nice name";
    }

    @Override
    public String getDescription(MyBeforeRunTask task) {
        return "Description";
    }

    @Nullable
    @Override
    public Icon getIcon() {
        return AllIcons.Actions.Compile;
    }

    @Nullable
    @Override
    public MyBeforeRunTask createTask(@NotNull RunConfiguration runConfiguration) {
        return new MyBeforeRunTask(getId());
    }

    @Override
    public boolean executeTask(@NotNull DataContext dataContext, @NotNull RunConfiguration runConfiguration, @NotNull ExecutionEnvironment executionEnvironment, @NotNull MyBeforeRunTask myBeforeRunTask) {
        return true;
    }
}

以及任务:

public class MyBeforeRunTask extends BeforeRunTask<MyBeforeRunTask> {

    protected MyBeforeRunTask(@NotNull Key<MyBeforeRunTask> providerId) {
        super(providerId);
        setEnabled(true);
    }
}