Зачем запускать сначала mvn clean clover2: установка установить clover2:clover, затем: mvn sonar:sonar

Исходя из вопроса, что Sonar + Clover работает только на инструментах src, рекомендуется сначала использовать mvn clean clover2:setup установить clover2:clover, затем: mvn sonar:sonar.

Просто удивительно, почему мы не можем использовать mvn clean clover2:setup установить clover2:clover sonar:sonar?

2 ответа

Решение

В прошлом это был рекомендуемый способ забить гол sonar:sonar в одиночестве. Это больше не так, поскольку SonarQube Scanner для Maven прекратил попытки запуска модульных тестов + собрал покрытие для вас, разорвав новый жизненный цикл Maven.

Общий совет теперь состоит в том, чтобы запускать цели в одной команде. Например mvn clean package sonar:sonar

В случае с Клевером clover:setup Цель изменит модель Maven, чтобы все остальные плагины (например, верные) использовали инструментальные классы вместо исходного исходного кода. Это действительно проблема, потому что она не позволит SonarQube сопоставлять файлы классов. Так что в вашем случае вы должны либо придерживаться двух отдельных целей, либо вручную настроить sonar.sources ссылаться на оригинальный исходный код.

Сравнил мавен бревна и нашел возможную причину:

"Mvn clean clover2:setup install clover2:clover sonar:sonar", похоже, имеет проблему с поиском каталогов Source. В журнале показано, что в качестве исходных каталогов используются аннотации ${project}\target\clover\src-instrumented и $ {project} \ target \ генерируемый-источник \.

Если явно указать src/main/java, то эта единственная команда работает хорошо. Единственная сложность заключается в том, что для запуска целей по отдельности не нужно указывать sonar.sources, но плагин все равно может найти нужную папку для исходных каталогов.

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