Я пытаюсь сгенерировать отчет jacoco xml для загрузки sonarqube моего java проекта.
Я успешно создал файл jacoco-exe c.
Я используя следующий фрагмент муравья:
<patternset id="customclasses">
<include name="**/*.class" />
<exclude name="**/*Test*" />
<exclude name="**/*test*" />
<exclude name="**/constants/**/*" />
</patternset>
<jacoco:report>
<executiondata>
<file file="${LOG_DIR}/jacoco/unit-jacoco.exec" />
</executiondata>
<structure name="root">
<group name="groupa">
<classfiles>
<fileset dir="${customextdir}">
<patternset refid="customclasses"/>
</fileset>
</classfiles>
</group>
</structure>
<xml destfile="${LOG_DIR}/jacoco/unit-jacoco.xml" />
<html destdir="${LOG_DIR}/jacoco/html" />
</jacoco:report>
во время выполнения моей цели муравья задачи отчета говорят:
[jacoco:report] Loading execution data file [...]/log/jacoco/unit-jacoco.exec
[jacoco:report] Writing bundle 'groupa' with 0 classes
Я дважды проверил содержимое набора файлов - он действительно содержит все мои файлы классов. В сгенерированном jacoco-сеансе. html я также могу видеть все ожидаемые классы, но сам отчет пуст.
Во время игры / попытки я сделал странное открытие: я попытался спровоцировать ошибку, позволяя "$ {customextdir}" указывать на другой проект. Но при этом в отчете содержатся все классы другого проекта (с нулевым охватом причины).
Я не понимаю поведение задачи отчета - надеюсь, кто-то сможет уточнить.
Обновление: возможно, я неправильно использую задачу муравья. Я просто переключился на использование jacoco-cli, этот работает как положено. Теперь я интегрировал jacoco-cli в ant:
<pathconvert property="jacococlassfiles" pathsep=" --classfiles ">
<path>
<fileset dir="${customextdir}">
<patternset id="customclasses">
<include name="**/*.class" />
<exclude name="**/*Test*" />
<exclude name="**/*test*" />
<exclude name="**/constants/**/*" />
</patternset>
</fileset>
</path>
</pathconvert>
<property name="completejacococlassfiles" value="--classfiles ${jacococlassfiles}" />
<property name="completecommand" value="java -jar ${workdir}/jacoco-${jacocoversion}/lib/jacococli.jar report ${LOG_DIR}/jacoco/unit-jacoco.exec --xml ${LOG_DIR}/jacoco/unit-jacoco.xml ${completejacococlassfiles}" />
<exec command="${completecommand}" />
Но это похоже на грязный обходной путь.