Maven - настройка всегда запускаемого задания после выполнения - PullRequest
3 голосов
/ 26 марта 2012

В моем POM-файле проекта мне нужно настроить шаг после выполнения .то есть после выполнения тестовых юнит-тестов, post exec.job проанализирует testng-xml-report и сгенерирует страницу статистики.Генерация отчета будет выполняться отдельным Jar.Этот Jar будет вызываться в фазе verify POM.

Но текущая проблема заключается в том, что для сценария успешного выполнения теста в фазе test он вызовет Jar и будет работать правильно.В случае сбоя будет сгенерирован отчет xml, но, поскольку фаза test терпит неудачу, она не будет переходить к фазе verify.

Так что я могу указать должен выполнить случай maven-exec-plugin exec цель для вызова Jar, независимо от того, успешна фаза test или нет.

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

Правильное решение для этого сценария - не провалить тесты.Тесты должны записывать сбой (например, в отчете XML), но бегун должен вернуть Maven «success».

Для Surefire вы можете достичь этого с помощью -DtestFailureIgnore=true

РЕДАКТИРОВАТЬ Вы можете поместить это в свой POM, чтобы активировать его постоянно.

Но если вы звоните maven с другими целями, результаты могут быть нежелательными.Например, для mvn deploy вы, вероятно, захотите остановить процесс при возникновении ошибок теста.

Чтобы это исправить, у вас есть две опции:

  1. Написать скрипт, который вызывает Mavenс необходимыми опциями для создания отчета о тестировании
  2. Переместите опцию в профиль

[EDIT] Подробная информация об опции # 1: Вы можете написать сценарий оболочки, который запускает Maven с -DtestFailureIgnore=true для создания отчетов.

Затем вам понадобится утилита, которая может найти отчеты XML и проверить, нет ли в них ошибок.Если вы используете для этого Java, позвоните System.exit(1), если найдете ошибки.Если вы предпочитаете командную строку, используйте XMLStarlet , чтобы выполнить запрос к XML, и инструмент, подобный find(1), для поиска файлов XML.Если вам нужна помощь, отправляйте новые вопросы.

Вызовите эту утилиту после Maven в вашем сценарии оболочки с помощью util || exit 1 - это остановит сценарий оболочки с кодом ошибки 1, если утилита обнаружит ошибку.

Используйте этот скрипт для сборки вместо встроенного бегуна Maven.

0 голосов
/ 26 марта 2012

Вы можете использовать mvn -fn clean install

-fn означает «отказ-никогда», и он всегда будет продолжаться, даже если сегмент потерпел неудачу.

См. mvn -help длябольше опций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...