Запустить Mojo программно из другого Mojo - PullRequest
1 голос
/ 31 марта 2020

Могу ли я сделать Mojo, который работает во время фазы integration-test, запустить другое Mojo, которое работает во время фазы verify?

Этот вопрос является продолжением моего предыдущего вопрос . Я расширил frontend-maven-plugin параметром, который задерживает сбой сборки от интеграционных тестов до фазы verify, чтобы фаза post-integration-test работала правильно. Это часто необходимо для очистки среды (закрыть БД, сервер, ...). Подтверждение получения по запросу доступно здесь .

Решение довольно хакерское, поскольку требует от пользователя добавления фазы выполнения verify, даже если он ничего не делает. Вместо этого я хотел бы, чтобы выполнение на этапе integration-test автоматически выполняло Mojo на этапе verify (без явного добавления пользователем этого в конфигурацию Maven). Таким образом, следующее:

<execution>
    <id>npm run integration tests</id>
    <goals>
        <goal>npm</goal>
    </goals>
    <phase>integration-test</phase>
    <configuration>
        <arguments>run e2e</arguments>
        <integrationTestFailureAfterPostIntegration>true</integrationTestFailureAfterPostIntegration>
    </configuration>
</execution>

должно запускать тесты e2e во время фазы integration-test, , но также должно выполнять другое Mojo во время фазы verify.

Возможно ли это и как бы вы это сделали?

ОБНОВЛЕНИЕ: мне удалось добавить еще один pluginExecution во время выполнения к плагину, например:

for (Plugin plugin : project.getBuildPlugins()) {
    if("com.github.eirslett".equals(plugin.getGroupId()) && "frontend-maven-plugin".equals(plugin.getArtifactId())){
        PluginExecution verifyExecution = new PluginExecution();
        verifyExecution.addGoal("verify");
        verifyExecution.setId("verify integration tests");
        verifyExecution.setPhase("verify");
        plugin.addExecution(verifyExecution);
    }
}

, но это, похоже, не влияет на время выполнения казни. Целью является пользовательский проверки Mojo, который выполняет проверку во время verify фазы

...