Как использовать плагин 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, с которыми плагин связан по умолчанию).