Haz todo lo posible por comprender el código bien antes de adaptarlo a tu proyecto y si ttienes algo que aportar puedes compartirlo con nosotros.
Solución:
Descubrí que si realiza el complemento de aplicación, la instrumentación de jacoco se lleva a cabo incluso si ha realizado dependOn.remove como se indica en la respuesta aceptada. Puede notar que la instrumentación todavía está ocurriendo cuando se crea un archivo llamado build/jacoco/test.exec incluso si los informes de jacoco no se crean.
Tuve que extraer el complemento jacoco, aplicarlo a un archivo .gradle separado e incluirlo condicionalmente como:
if (jacocoEnabled.toBoolean() )
project.logger.lifecycle('applying jacoco build file')
apply from: "jacoco.gradle"
Entonces mi archivo jacoco.gradle se ve así:
apply plugin: 'java'
apply plugin: 'jacoco'
test
jacoco
append = false
destinationFile = file("$buildDir/jacoco/test.exec")
jacocoTestReport
reports
xml.enabled true
xml.destination file("$buildDir$jacocoXMLDestination")
test.finalizedBy jacocoTestReport
Esto llevó mi tiempo de compilación de 4 minutos a 3 minutos, lo que proporcionó algunos ahorros.
Editar
Después de leer la segunda respuesta y probarla yo mismo, sugiero y aprecio mucho la publicación de blog a continuación, ya que es true la instrumentación aún ocurre incluso después de deshabilitar o eliminar las tareas.
https://poetengineer.postach.io/post/how-to-conditionally-enable-disable-jacoco-in-gradle-build
Si se ejecuta en Jenkins, el error 137 podría ser un problema de falta de memoria.
Si se ejecuta en Jenkins, intente ampliar la memoria y consulte este enlace.
Me sale OutOfMemoryError
Tareas de Jacoco:
jacocoTestReport - JacocoReport Generates code coverage report for the test task.
jacocoTestCoverageVerification - JacocoCoverageVerification Verifies code coverage metrics based on specified rules for the test task.
Para saber qué tareas tienen qué dependencias puedes hacer
gradle tasks --all
Para excluir la tarea con cmd puede
gradle test -x taskToExclude
Programáticamente, puede usar un gráfico de tareas para excluirlo
gradle.taskGraph.useFilter task -> yourstuff
o simplemente elimínelo de las dependencias de tareas de prueba
test.dependsOn.remove("jacocoTestReport")
test.dependsOn.remove("jacocoTestCoverageVerification")
Recurso adicional que vale la pena consultar: https://docs.gradle.org/current/userguide/jacoco_plugin.html
Reseñas y valoraciones
Te invitamos a reafirmar nuestra publicación poniendo un comentario y puntuándolo te damos la bienvenida.