El informe agregado de Jacoco está generando un archivo Exec en lugar de XML.
Pregunta
Tenemos un proyecto maven de varios módulos. Estamos usando Java8.
-Parent
-- Child 1
-- Child 2
-- Coverage-Report
Todos los proyectos tienen casos de prueba unitarios que funcionan bien y tienen una cobertura superior al 85%. El archivo pom.xml del proyecto principal tiene el perfil jacoco y el plugin jacoco-maven-plugin que se muestran a continuación:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<configuration>
<destFile>${sonar.coverage.jacoco.xmlReportPaths}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
En el módulo Coverage-Report, solo hay un archivo pom.xml que sirve para la agregación del informe. Tiene el perfil jacoco como se muestra a continuación:
<profile>
<id>jacoco</id>
<activation/>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>report-aggregate</id>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Para generar el informe, estamos usando el siguiente comando:
mvn clean verify -Pjacoco
Observamos que se genera el archivo que se menciona en el archivo pom.xml del proyecto principal:
<sonar.coverage.jacoco.xmlReportPaths>${maven.multiModuleProjectDirectory}/ocapi-promotion-service-coverage-report/target/site/jacoco-aggregate/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
Sin embargo, este archivo, jacoco.xml, no es un XML válido. Tiene algunos caracteres codificados como se muestra a continuación. (algunas líneas del archivo):
��ca6191af5ae0-1a24a201}-�Sy}-ƌ|pW�\����;org/springframework/context/annotation/BeanAnnotationHelper�w~�j�zI�ZMorg/springframework/boot/autoconfigure/condition/FilteringSpringBootCondition������e֢+org/sp
En Jenkins, vemos el siguiente error:
Caused by: java.nio.charset.MalformedInputException: Input length = 1
He seguido un artículo de la comunidad de fuentes de Sonar https://community.sonarsource.com/t/coverage-test-data-importing-jacoco-coverage-report-in-xml-format/12151 que proporciona algunos pasos. Pero no puedo generar el archivo XML. Por favor, ayúdeme.
davy.ai
Parece que tienes problemas para generar un archivo XML válido a partir de tu informe Jacoco. Es posible que la codificación del archivo sea incorrecta, lo que causa la MalformedInputException.
Para solucionar este problema, puedes intentar los siguientes pasos: