Почему cobertura сообщает о нулевом покрытии кода для всех модулей, кроме одного, в многомодульном проекте maven?

Я пытаюсь создать отчет о покрытии кода для нашего многомодульного проекта maven с помощью cobertura. После запуска mvn clean, а затем запуска mvn package. Затем в одном из модулей, из которого мы запускаем тесты JUnit, отчет о покрытии, созданный для этого модуля, является правильным, как и ожидалось. Но покрытие распространяется только на несколько пакетов. Покрываются не все пакеты. Помните, что это многомодульный проект с одним родительским POM и каждым дочерним модулем, имеющим свой собственный POM. Должен ли я также включать детали плагина cobertura maven в каждый из этих дочерних POM?

Однако отчет о покрытии для отдельного модуля, созданный в каталогах other / target / site / cobertura, считается нулевым как для покрытия линии, так и для покрытия ответвления.

Мне что-то не хватает в родительском POM? Я не вносил никаких изменений ни в один из дочерних POM в каталогах. Пожалуйста, дайте мне знать, как сгенерировать отчет о покрытии кода для многомодульного проекта maven с помощью cobertura.

Вот как выглядит мой родительский POM.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <formats>
            <format>html</format>
            <format>xml</format>
        </formats>
    </configuration>
    <inherited>true</inherited>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>cobertura</goal>
            </goals>
       </execution>
   </executions>
</plugin>

...

<dependencies>
    <dependency>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.5.1</version>
        <type>plugin</type>
        <scope>package</scope>
    </dependency>
</dependencies>

Спасибо!


person user1492680    schedule 30.06.2012    source источник
comment
Какую версию jdk вы используете / указываете в разделе конфигурации maven-compiler-plugin?   -  person user1050755    schedule 18.03.2013


Ответы (1)


Согласно документации, есть различие между плагинами, которые запускаются как часть сборки, и плагинами, которые запускаются как часть отчетности: http://maven.apache.org/guides/mini/guide-configuring-plugins.html.

ваше использование «выполнения» предполагает, что у вас есть плагин в разделе «сборка», тогда как, по-видимому, он относится к «отчетам» - согласно странице использования cobertura: http://mojo.codehaus.org/cobertura-maven-plugin/usage.html

Попробуйте полностью удалить плагин cobertura из сборки и поместить его в раздел отчетов:

<project>
    <!-- project stuff-->
    <build>
        <!-- build stuff -->
    </build>
    <reporting>
        <plugins>
            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.2</version>
                <configuration>
                    <formats>
                        <format>html</format>
                    </formats>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>

затем запустите его с помощью

mvn cobertura:cobertura

или с

mvn site
person Graham Griffiths    schedule 02.07.2013