Создание пользовательской конфигурации запуска с использованием IntelliJ SDK и добавление задачи сборки в разделе «Перед запуском». - PullRequest
0 голосов
/ 27 декабря 2018

Я следую учебному пособию в Запустить конфигурацию в IntelliJ IDEA SDK.

После учебного курса я получу новую панель конфигурации с пустым разделом «Перед запуском».Этот раздел добавлен по умолчанию.

enter image description here

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

enter image description here

Я пытаюсь понять, как, но я не могу найти ни пример, ни документацию по этому вопросу.

1 Ответ

0 голосов
/ 30 декабря 2018

Как добавить задачу по умолчанию 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);
    }
}
...