Maven очень мощное средство разработки, но мне нередко не хватало в нем аналога своего рода try...finally, т.е. какой то фазы которая гарантированно взывается по окончании, поскольку иногда хочется заустить что то в начале билд процесса (чтонить вроде докер сервиса) и потом закрыть в конце.
На выходных появилось немного свободного времени и сделал расширение
mvn-finisher-extension, которое будучи подключенным, добавляет три новых фазы:
—
finish, обрабатываемая при любом окончании maven сессии
—
finish-ok, обрабатываемая при successful окончании maven сессии
—
finish-error, обрабатывается если сессия зафейлилась
подключается расширение достаточно просто
<build>
<extensions>
<extension>
<groupId>com.igormaznitsa</groupId>
<artifactId>mvn-finisher-extension</artifactId>
<version>1.0.0</version>
</extension>
</extensions>
</build>
каждая задача в данных фазах выполняется в отдельном запросе к maven и выполняются они все (внезависимости от того были в них ошибки или нет)
пример задачи помеченной для выполнения в finish фазе
<plugin>
<groupId>com.github.ekryd.echo-maven-plugin</groupId>
<artifactId>echo-maven-plugin</artifactId>
<version>1.2.0</version>
<executions>
<execution>
<id>print-echo</id>
<phase>finish</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>Hello World from finishing task</message>
</configuration>
</execution>
</executions>
</plugin>
если присутствуют задачи помеченные как finish-ok/finish-error и finish, то сначала выполняются finish-ok/finish-error и затем finish, задачи выполняются последовательно