Как использовать плагин Cobertura maven, чтобы байт-код не изменялся?

Недавно я попытался включить плагин cobertura для нашего проекта. Но я столкнулся со странной проблемой. Теперь, если я попытаюсь сделать это:

mvn clean package cobertura:check-integration-test

Мой проект собирается просто отлично. Но после развертывания вот что я получаю как сообщение:

java.lang.NoClassDefFoundError: net / sourceforge / cobertura / coveragedata / LightClassmapListener

Это происходит, как я понимаю, потому что cobertura изменяет байт-код моих классов. Итак, как я должен приступить к проверке и созданию кода? Сейчас я придумаю следующее решение для teamcity:

Первый шаг запускает кобертура:

mvn clean package cobertura:check-integration-test

После этого второго шага запускается обычная сборка:

mvn clean package

Кажется, это работает, но кажется странным, что мне приходится запускать процесс упаковки дважды (это занимает двойное время), просто чтобы сделать чистую сборку с байт-кодом, не затронутым плагином cobertura.

1 ответ

Если вы используете qualinsight-mojo-cobertura Ваши классы будут заархивированы во время инструментария, а затем восстановлены в отчетное время (что, в свою очередь, приведет к наличию неинструментированных классов в сгенерированном пакете).

Между интрументацией и отчетностью вы запускаете свои тесты (будь то UTs, IT) как хотите (в отличие от maven-cobertura-plugin, qualinsight-mojo-cobertura не запускает тесты). Для получения дополнительной информации проверьте страницу проекта (особенно фазы Maven, с которыми плагин связан по умолчанию).

Другие вопросы по тегам