2013-03-26 3 views
0

У меня есть базовый мультимодуль maven, а родительский модуль представляет собой POM и три дочерних модуля: домен, сервис и сеть.Многомодульный maven: покрытие для тестирования jacoco sonar

Я добавил в родительский pom плагин jacoco и необходимую конфигурацию, чтобы добавить отчет о покрытии теста в один файл, легко расположенный сонаром.

<build> 
<plugins> 
    <plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.6.2.201302030002</version> 
    <configuration> 
    <destFile>${project.basedir}/../target/jacoco.exec</destFile> 
    <append>true</append> 
    </configuration> 
    <executions> 
    <execution> 
    <id>jacoco-initialize</id> 
    <goals> 
     <goal>prepare-agent</goal> 
    </goals> 
    </execution> 
    </executions> 
    </plugin> 
</plugins> 
</build> 

Моя проблема заключается в том, что Sonar показывает только тестовое покрытие первого модуля (будучи домен) (даже если я открываю файл с редактором, и я вижу имена классов из других модулей которые приобщают в нем.

Что может неправильно в этой конфигурации

Для чего это стоит, анализ гидролокатора вызывается из Дженкинс, а не от МВН гидролокатора: сонар

+0

Почему вы добавляете jacoco-Maven-плагин для вашего POM? Sonar не требует дополнительных плагинов. Он отлично работает с существующими POM без каких-либо изменений – ZhekaKozlov

+0

@orionll Я добавляю плагин и особенно для конфигурации, чтобы добавить файлы jacoco.exec каждого из модулей в один в родительском forlder. –

ответ

0

Конфигурация Jenkins - это ключ: нет необходимости добавлять все в один файл, когда конфигурация правильная.

Я добавил это в конфигурации:

sonar.modules=xxx-domain,xxx-service,xxx-web 

и я удалил тег конфигурации в pom.xml данном в вопросе.

Он работает как шарм

Для тех, кто борется с этим, искать что-нибудь полезное, чтобы задать конфигурацию Дженкинс проекта для гидролокатора

+0

Это означает, что вы анализируете свой проект с помощью задания FreeStyle вместо задания Maven с помощью действия Sonar Post Build Action? Если да, не могли бы вы объяснить, почему? –

+0

@ Fabrice-SonarTeam Конфигурация выглядит так: Дженкинс делает непрерывную интеграцию, строя модули maven. Я не хочу, чтобы мои модули ничего не знали о гидролокаторе. –

0

Вы можете проверить наш пример приложения здесь: https://github.com/SonarSource/sonar-examples/tree/master/projects/code-coverage/ut/maven/ut-maven-jacoco-runTests

Тогда вы должны найти что-то не в этом.

+0

приведенный пример не для нескольких модулей в maven. –

+0

Плюс я указал, что я запускал сонар из дженкинсов, а не из mvn-сонара: сонар –

+0

Ну, мы анализируем базу кода Sonar на сервере Jenkins, используя плагин Sonar Jenkins, и мы не указали ничего особенного в POM. И он использует ту же конфигурацию, что и в примере, который я вам дал. Так что это должно сработать, если ящик для вас без необходимости настройки плагина JaCoCo Maven, как вы сделали => нет необходимости добавлять все файлы jacoco.exec в один. –