Создание сайта maven, включая отчет Cobertura

У меня есть несколько проектов, которые уже создают сайты с помощью maven, и я хочу интегрировать в них отчеты cobertura, но ни одна цель maven, которую я, кажется, не запускаю, не создаст для меня локальный предварительный просмотр, который включает отчеты Cobertura в сайт. Я хочу убедиться, что они генерируются правильно, прежде чем я зафиксирую изменения pom в репо и не сгенерирую сломанный сайт.

Ниже показано, что я добавил к maven poms (родительский и модуль), но сайт, который я вижу при запуске mvn site:run, не включает отчеты cobertura:

<project>
...
    <build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <configuration>
                <check>
                    <haltOnFailure>false</haltOnFailure>
                    <regexes>
                        <regex>
                            <pattern>parent-package-name-here.*</pattern>
                            <branchRate>80</branchRate>
                            <lineRate>80</lineRate>
                        </regex>
                    </regexes>
                </check>
                <instrumentation>
                    <includes>
                        <include>parent-package-name-here/**/*.class</include>
                    </includes>
                </instrumentation>
            </configuration>
            <executions>
                <execution>
                    <id>clean</id>
                    <phase>pre-site</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
                <execution>
                    <id>instrument</id>
                    <phase>site</phase>
                    <goals>
                        <goal>instrument</goal>
                        <goal>cobertura</goal>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
...
<reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
            </plugin>
        </plugins>
</reporting>
...
</project>

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

Ответов (6)

Решение

Я понял, как это сделать.

Кажется, есть много ошибок в создании ссылок в плагине создания сайтов maven.

Единственный способ заставить maven сгенерировать локальную копию сайта со ссылками на рабочие модули - это изменить distributionManagement/site тег так, чтобы он указывал на какой-то локальный каталог вместо реального каталога развертывания, а затем использовал maven site:deploy .

Каждая попытка использования mvn site:stage порождает неработающие ссылки. То же самое и с mvn site:run .

Ссылки отчета работают с mvn site:run /, mvn site:stage а ссылки на модули - нет.

Мы используем

mvn site-deploy

Это создает сайт и развертывает его (копирует его в место, которое мы настроили).

mvn site

должен делать то, что вы ищете. Вы настраиваете плагин для работы на этапах жизненного цикла, предшествующих сайту, и на этапах сайта, но затем вы выполняете сайт: цель выполнения, а не сайт. Мы делаем аналогичные вещи с Clover (инструмент коммерческого покрытия), и сайт mvn делает свое дело.

Стоит сделать:

mvn site

Чтобы уточнить, запуск mvn a: b запускает цель b в плагине a. Сказать mvn c означает запустить фазу жизненного цикла c, на которой выполняются все связанные цели на всех этапах до c. В результате это вызовет гораздо больше событий (например, выполнение необходимой подготовки для создания отчетов cobertura).

mvn site:site должен создать то, что вам нужно, в целевом каталоге будет каталог сайта, содержащий все отчеты, связанные с объектом index.html в этом каталоге.

По моему опыту, ссылки на модули site: stage не работают и для многомодульных сборок, в отличие от site: deploy. Попробуй это:

Используйте свойство для URL-адреса сайта в родительском pom, например ${site.url} . Тогда назовите это

mvn clean site site:deploy -Dsite.url=file://`pwd`/target/site-deployed

pwd Является -nix команда , которая заменит текущий каталог. Это потому, что URL-адрес, который вы используете, должен быть абсолютным.