Esta es el arreglo más exacta que encomtrarás compartir, pero primero obsérvala detenidamente y analiza si se puede adaptar a tu trabajo.
Solución:
No debe invocar al agente después de la fase de instalación sino antes, así que en lugar de invocar:
mvn clean install jacoco:prepare-agent jacoco:report
deberías invocar
mvn clean jacoco:prepare-agent install jacoco:report
La razón principal es: el agente no participará en el ciclo de vida de la compilación, el test
fase ya se ejecutará como parte de la install
fase, entonces Maven ejecutará el agente según la invocación de la línea de comando, pero será demasiado tarde.
Probablemente también debería cambiar la configuración del complemento anterior a:
org.jacoco
jacoco-maven-plugin
0.7.6.201602180812
jacoco-initialize
prepare-agent
jacoco-site
package
report
Nota: eliminé la sección de configuración porque en realidad apuntaba a valores predeterminados. Además, los elementos XML distinguen entre mayúsculas y minúsculas aquí, por lo que su datafile
elemento fue simplemente ignorado, debería haber sido dataFile
en cambio. Lo mismo se aplica a destFile
.
los prepare-agent
el objetivo ya está usando $project.build.directory/jacoco.exec
por defecto destFile
valor, lo mismo se aplica a la dataFile
valor para el report
meta. La razón principal de este cambio sería una construcción más flexible y estándar, sin depender de artifactId
como nombre del proyecto (el predeterminado, pero aún no obligatorio) y usando el más genérico $project.build.directory
propiedad en lugar de apuntar directamente a target
.
Nota final: asegúrese de configurar las ejecuciones del complemento Jacoco dentro del build/plugins
sección y no build/pluginManagement/plugins
sección. los pluginManagement
La sección está destinada a la gobernanza y la armonización común de versiones o configuraciones, pero será ignorado si el plugin correspondiente no se declarara bajo build/plugins
.
Según la referencia oficial de Maven POM
administración de complementos: es un elemento que se ve junto a los complementos laterales. La administración de complementos contiene elementos de complemento de la misma manera, excepto que en lugar de configurar la información del complemento para esta compilación de proyecto en particular, está destinado a configurar compilaciones de proyecto que heredan de esta. Sin embargo, esto solo configura complementos a los que realmente se hace referencia dentro del elemento de complementos en los niños Los niños tienen todo el derecho de anular
pluginManagement
definiciones
(nota: la negrita es mía)
- Los informes de JaCoCo se crean a partir del archivo de datos de ejecución.
- Si este archivo no está presente, el objetivo del informe de JaCoCo omite la creación del informe.
- Por lo tanto, es obligatorio crear el archivo de datos de ejecución.
Las razones por las cuales no se creará el archivo de datos de ejecución son las siguientes
– Las pruebas no están presentes.
– Todas las pruebas son ignoradas.
– Falta el complemento Surefire.
– El objetivo del agente de preparación de JaCoCo no se ejecuta, lo que establece argLine, que se necesita para configurar de forma segura.
– El complemento Surefire no está configurado con el agente de JaCoCo.
Creo que “destfile” y “datafile” distinguen entre mayúsculas y minúsculas, así que intente reemplazarlos con “destFile” y “dataFile”, tal vez funcione 🙂
Nos puedes estimular nuestra ocupación poniendo un comentario y puntuándolo te damos la bienvenida.