Home sub-project jacoco report 합치기
Post
Cancel

sub-project jacoco report 합치기

sub-project jacoco report 합치기

🎊 시작하기 전에…

Spring Boot 또는 Java/Kotlin으로 프로젝트를 진행할 때 각 도메인별로 프로젝트를 나누는 경우 또는 도메인 / 인프라로 프로젝트를 나누는 경우가 있다.

이 상황에서 jacoco를 이용해서 Code Coverage를 분석할 때 각 서브 프로젝트별 build 디렉토리에 Report가 저장되는데, 이러면 github actions에서 Third Party 서비스를 이용할 때 Report를 제대로 전달하지 못하거나, 여러 파일을 전달해야하는 경우가 발생한다.

이 글은 위 상황에서 jacoco의 Test Report를 루트 build 디렉토리에 합치는 방법에 대한 글이다.

1️⃣ 첫 번째로..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// build.gradle.kts
...

allprojects {
		...
    apply(plugin = "jacoco")
		...
}

...

tasks.register<JacocoReport>("jacocoRootReport") {
    subprojects {
        this@subprojects.plugins.withType<JacocoPlugin>().configureEach {
            this@subprojects.tasks.matching {
                it.extensions.findByType<JacocoTaskExtension>() != null }
                .configureEach {
                    sourceSets(this@subprojects.the<SourceSetContainer>().named("main").get())
                    executionData(this)
                }
        }
    }

    reports {
        xml.outputLocation.set(File("${buildDir}/reports/jacoco/test/jacocoTestReport.xml"))
        xml.required.set(true)
        html.required.set(false)
    }
}

build.gradle에서 위와 같이 설정을 해준다. 간단하게 Jacoco task가 존재하면 루트에 저장하는 것이다.

This post is licensed under CC BY 4.0 by the author.