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

17 lines
1.4 KiB
Markdown

# 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`.