prometeu-studio/discussion/lessons/DSC-0024-jacoco-reports-consolidation/LSN-0038-jacoco-reports-consolidation.md

1.4 KiB

LSN-0038: JaCoCo Reports Consolidation in Gradle

  • Problem: Múltiplos módulos Gradle gerando reports individuais de cobertura de código, dificultando a visão consolidada para o Jenkins.
  • Decision: Implementar o plugin JaCoCo via buildSrc para todos os subprojetos e criar uma task de agregação customizada no root project.
  • Implementation:
    • buildSrc/src/main/kotlin/gradle.java-common-conventions.gradle.kts: Aplicado o plugin jacoco e configurado o jacocoTestReport para rodar após o test.
    • build.gradle.kts (Root): Criada a task jacocoTestReport que agrega executionData, sourceDirectories e classDirectories de todos os subprojetos Java folha.
  • Example:
    • Rodar ./gradlew test jacocoTestReport gera:
      • Reports individuais: <module>/build/reports/jacoco/test/html/index.html
      • Report consolidado: build/reports/jacoco/jacocoTestReport/html/index.html
  • Pitfalls:
    • O plugin jacoco-report-aggregation nativo do Gradle pode ter problemas com estruturas de subprojetos aninhados que não possuem o plugin Java aplicado. A task customizada no root é mais robusta para este layout.
    • É importante filtrar apenas subprojetos "folha" (sem subprojetos próprios) que aplicam o plugin java para evitar erros de diretórios inexistentes.
  • References:
    • DSC-0024, DEC-0024, PLN-0047.