gradle 파일을 나누게 된 이유
이전에 Spring REST Docs 의존성을 추가하면서 전체적인 빌드 설정과 문서화 프로세스가 복잡해지기 시작했다. 그런데 이번에 JaCoCo 의존성을 추가하면서 코드 커버리지 분석 및 보고서 생성 과정이 추가되었고, 이로 인해 빌드 스크립트의 복잡성이 더욱 증가했다. 이러한 상황에서 Gradle 파일을 기능별로 나누어 각 설정을 독립적으로 관리하는 것이 필요하다고 생각하게 되었다.
chaewsstore (root)
├── chaewsstore-admin
│ └── build.gradle
├── (생략)
├── gradle
│ ├── asciidoc.gradle
│ └── jacoco.gradle
│
├── build.gradle
└── settings.gradle
root의 build.gradle에서 jacoco.gradle을 apply 하고, admin 모듈의 build.gradle에서 asciidoc.gradle을 apply 하는 방법을 정리해보았다.
gradle 분리하기
이전 글에서 jacoco.gradle 내용을 볼 수 있으니 생략하고, 남은 root의 build.gradle은 이렇다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
}
apply from: 'gradle/jacoco.gradle'
allprojects {
group = 'com.chaewsstore'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
targetCompatibility = '17'
repositories {
mavenCentral()
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
compileJava.options.encoding = 'UTF-8'
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
implementation 'org.apache.commons:commons-collections4:4.4'
implementation "org.projectlombok:lombok"
annotationProcessor "org.projectlombok:lombok"
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
testImplementation "org.projectlombok:lombok"
testAnnotationProcessor "org.projectlombok:lombok"
}
test {
useJUnitPlatform()
}
}
apply from: 'gradle/jacoco.gradle'을 통해 jacoco.gradle 파일의 내용을 build.gradle 파일에 포함시켜 JaCoCo 설정을 중앙에서 관리하고 빌드 스크립트를 모듈화하여 관리하기 쉬운 구조로 개선된 것을 확인할 수 있다.
admin 모듈의 build.gradle에서 asciidoc.gradle을 apply 하는 방법도 위와 같다. 다만 admin 모듈의 build.gradle은 root 디렉토리에 위치한 것이 아닌, admin 모듈의 하위 디렉토리에 위치해 있기 때문에 상대 경로를 사용하여 상위 디렉토리에서 asciidoc.gradle 파일을 참조해야 한다.
apply from: '../gradle/asciidoc.gradle'
이와 같이 junit.gradle, lombok.gradle, spring.gradle 등 gradle 파일을 따로 나누어 관리하면 각 모듈의 빌드 스크립트가 더 명확해지고 유지보수하기 쉬워지게 된다. 또한 공통 설정이나 의존성 업데이트 시에도 일관성을 유지하며 간편하게 적용할 수 있게 된다는 장점이 있다.
'Back-end' 카테고리의 다른 글
[Spring Boot] 로컬 환경에서 Github Actions 테스트하기 (0) | 2024.08.16 |
---|---|
[JUnit] 테스트 코드에 Test Fixture 사용하기: 테스트 데이터 재사용 (0) | 2024.08.05 |
[Spring Boot] 멀티모듈에 JaCoCo + JaCoCo Report Aggregation 적용하기 (3) | 2024.07.25 |
Jmeter를 사용한 동시성 테스트 (0) | 2024.07.05 |
[Spring] Spring Security를 이용한 JWT 기반 인증 및 인가 설정 (0) | 2024.06.22 |