Я использую плагин для отправки сообщения Slack через Maven. Мне интересно, можно ли использовать плагин, когда сборка завершилась неудачей, поэтому я автоматически получаю уведомление о неудавшейся сборке?Запустите плагин Maven при сбое сборки
ответ
Вы можете сделать это в самом Maven через механизм EventSpy
, встроенный в Maven 3.0.2. На каждом этапе сборки несколько событий поднимаются самим Maven или настраиваемым кодом, и можно прослушивать эти события для выполнения некоторых действий. Событие выполнения, поднятое Maven, представлено классом ExecutionEvent
. Каждое событие имеет a type, в котором описывается, какое событие он представляет: project failure, Mojo failure, project skipped и т. Д. В этом случае событие сбоя проекта - это то, что вы ищете.
Пользовательский шпион по событиям - это просто класс Java, который реализует интерфейс EventSpy
. Предпочтительно, он должен наследовать от вспомогательного класса AbstractEventSpy
. В качестве примера, создать новый проект (назовем его my-spy
), и добавьте следующий класс Java под пакетом:
import org.apache.maven.eventspy.AbstractEventSpy;
import org.apache.maven.eventspy.EventSpy;
import org.apache.maven.execution.ExecutionEvent;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
@Component(role = EventSpy.class)
public class BuildFailureEventSpy extends AbstractEventSpy {
@Requirement
private Logger logger;
@Override
public void onEvent(Object event) throws Exception {
if (event instanceof ExecutionEvent) {
ExecutionEvent executionEvent = (ExecutionEvent) event;
if (executionEvent.getType() == ExecutionEvent.Type.ProjectFailed) {
logger.info("My spy detected a build failure, do the necessary here!");
}
}
}
}
Этот код просто регистрирует шпион через сплетение @Component
аннотацию, и регистрирует сообщение, когда проект не удалось построить. Чтобы скомпилировать этот класс, вам просто нужно добавить в проект my-spy
зависимость от Maven Core и выполнение плагина plexus-component-metadata
для создания правильных метаданных Plexus для этого компонента.
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
После того, как этот проект будет собран и установлен в локальном хранилище (через mvn clean install
), вы можете добавить его в сборку другого проекта через core extensions mechanism.
Перед тем, как Maven 3.3.1, вам пришлось отбросить my-spy
JAR в папку ${MAVEN_HOME}/lib/ext
, чтобы Maven мог ее найти. Начиная с версии 3.3.1, вам не нужно возиться с установкой Maven и можете создать файл .mvn/extensions.xml
в вашем базовом каталоге проекта (${maven.multiModuleProjectDirectory}/.mvn/extensions.xml
). Его содержание будет
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
<groupId>my.spy</groupId>
<artifactId>my-spy</artifactId>
<version>0.0.1</version>
</extension>
</extensions>
, который просто объявляет расширение, указывающее на координаты Maven проекта шпиона. Maven (≥ 3.3.1) по умолчанию будет искать этот файл и, таким образом, ваш шпион будет правильно зарегистрирован и вызывается во всей сборке.
Единственное, что нужно сделать, это указать, что должен делать шпион. В вашем случае он должен вызывать плагин Maven, поэтому вы можете посмотреть библиотеку Mojo Executor, что делает ее очень простой.
- 1. Maven выполнить цель на сбое сборки/FindBugs
- 2. Настроить плагин сборки maven
- 3. Плагин Webpack: ошибки при сбое в процессе сборки
- 4. maven «catch» execute - выполнить очистку при сбое сборки
- 5. Как отобразить пользовательское сообщение при сбое сборки Maven
- 6. Как предотвратить неудачу сборки Maven при сбое Ant-задачи?
- 7. Как остановить пакетное выполнение при сбое сборки maven
- 8. Плагин сборки Maven с плагином Maven Jar
- 9. плагин сборки maven исключает .gitignore
- 10. Maven ошибка сборки расслоением плагин
- 11. Плагин сборки Maven не выполнен
- 12. Gradle заменяет плагин сборки Maven
- 13. Плагин сборки Maven - flat unpack
- 14. Команды запуска при сбое сборки
- 15. Сбой при сбое внешней сборки
- 16. Запустите tomcat7: запустите плагин maven в eclipse и отлаживайте
- 17. Запустите плагин Gimp при запуске
- 18. сделать плагин прервать процесс сборки с Maven
- 19. суффикс сгенерированного tar.gz в Maven сборки плагин
- 20. Уведомлять о сбое сборки
- 21. Плагин сборки Maven с символами Unicode
- 22. Плагин сборки Maven: исключая файлы при использовании стандартного дескриптораRef
- 23. Intellij Idea игнорирует плагин сборки maven
- 24. Maven сборки плагин - сложный Архивирование сценарий
- 25. Плагин сборки Maven с ошибкой NullPointerException?
- 26. Maven сборки плагин перераспределения зависимостей в jenkins
- 27. Игнорировать maven плагин во время сборки
- 28. Плагин сборки maven не устанавливает атрибуты файла
- 29. Maven сборки плагин пренебрегая классификатор исключает
- 30. Maven сборки-плагин и название банка конфликт
Разве вам не легче сообщить серверу сборки? –
@JF Meier хорошая точка, мы сделаем это в будущем. Но, тем не менее, это не так, как я спрашиваю? – Jelle