2016-10-30 4 views
0

Для моей маленькой Java/приложения Maven, я использую JaCoCo в моем pom.xml как под:JaCoCo Формат отчета

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.6.201602180812</version> 
     <configuration> 
     <destFile>${basedir}/target/coverage-reports/jacoco.exec</destFile> 
     </configuration> 
     <executions> 
     <execution> 
      <goals> 
      <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>report</id> 
      <phase>package</phase> 
      <goals> 
      <goal>report</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Пока я не использую параметр <destFile>, отчеты по умолчанию в папке target/site/jacoco являются корректно сгенерированный в формате XML, CSV и HTML. Но когда я использую элемент <destFile>, чтобы изменить папку по умолчанию, в которой сгенерированы отчеты, создается только файл jacoco.exec и ничего больше. Как изменить папку отчета, а также получить отчеты в форматах csv, xml и html?

ответ

0

С параметром destFile вы изменили местоположение, в котором цель prepare-agent будет записывать файл данных выполнения. По умолчанию это ${project.build.directory}/jacoco.exec, что означает (по умолчанию) target/jacoco.exec. Однако цель report предполагает, что путь к исполняемому файлу должен быть передан в параметре dataFile, который, разумеется, по умолчанию равен ${project.build.directory}/jacoco.exec, чтобы они синхронизировались. Поэтому, если вы хотите изменить путь к этому исполняемому файлу, вам необходимо сопоставить эти два параметра. Для того, чтобы не дублировать путь, вы можете использовать свойство Maven, чтобы сделать это:

<properties> 
    <jacoco.execution.file>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.execution.file> 
</properties> 
<build> 
    <plugins> 
    <plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.7.201606060606</version> 
     <configuration> 
     <destFile>${jacoco.execution.file}</destFile> 
     <dataFile>${jacoco.execution.file}</dataFile> 
     </configuration> 
     <executions> 
     <execution> 
      <goals> 
      <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>report</id> 
      <phase>prepare-package</phase> 
      <goals> 
      <goal>report</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Обратите внимание, что это не изменит выходной каталог в JaCoCo отчетов; это просто изменяет путь к исполняемому файлу. Для этого вы можете использовать параметр outputDirectory:

Выходной каталог для отчетов. Обратите внимание, что этот параметр имеет значение только в том случае, если цель выполняется из командной строки или из жизненного цикла сборки по умолчанию. Если цель выполняется косвенно как часть генерации сайта, вместо этого используется выходной каталог, настроенный в Плагине сайта Maven.

и имеют следующий элемент конфигурации добавлен:

<configuration> 
    <!-- rest of your JaCoCo configuration --> 
    <outputDirectory>${project.build.directory}/coverage-reports/jacoco</outputDirectory> 
</configuration> 

Это убедитесь, что все HTML, XML, CSV и отчеты формируются под target/coverage-reports/jacoco. Обратите внимание, что эта конфигурация не будет использоваться как часть поколения Maven Site при запуске mvn site. Во время создания сайта вам нужно будет настроить outputDirectorymaven-site-plugin.

+0

Еще раз спасибо :) – user1107888