플러그인 추가
id 'com.diffplug.spotless' version "8.2.1"
Gradle을 사용하고 있고, https://plugins.gradle.org/ 를 참고하면 된다.
build.gradle에 Spotless 설정
spotless {
java {
target("**/*.java")
targetExclude("**/SecurityConfig.java", "**/SwaggerConfiguration.java", "**/generated/**")
googleJavaFormat().aosp() // 구글 자바 포맷 적용
importOrder('java|javax|jakarta', 'org.springframework', '', 'org.junit|org.mockito', '\\#', '\\#org.junit') // import 순서 정의
removeUnusedImports() // 사용하지 않는 import 제거
trimTrailingWhitespace() // 공백 제거
endWithNewline() // 끝부분 New Line 처리
formatAnnotations() // 어노테이션 정렬
}
}
java 파일을 대상으로 Spotless가 적용되도록 했다.
SecurityConfig.java, SwaggerConfiguration.java 등과 같은 파일은 제외했다.
import 순서도 정의해서 코드가 좀더 깔끔하게 정리되도록 했다 !
Spotless 실행 방법
Gradle은 Tasks > verification > spotlessApply로 실행
이렇게 하는 게 번거롭기도 하고 팀 프로젝트를 하다보면 실행을 안 하고 올리는 사람도 있다..
그래서 precommit을 이용해서 자동화를 하였다 !

커밋 시 자동으로 Spotless가 실행되도록 하려면 아래 두 과정이 필요하다.
1) 루트 프로젝트에 scripts/pre-commit을 생성
#!/bin/sh
# 1. 변경된 파일들 이름만 추출하여 저장
stagedFiles=$(git diff --staged --name-only)
# 2. SpotlessApply 실행
echo "Running spotlessApply. Formatting code..."
./gradlew spotlessApply --daemon
# 3. 변경사항이 발생한 파일들 다시 git add
for file in $stagedFiles; do
if test -f "$file"; then
git add "$file"
fi
done
2) build.gradle
tasks.register('updateGitHooks', Copy) {
from './scripts/pre-commit'
into './.git/hooks'
}
compileJava.dependsOn updateGitHooks
참고
https://seongho-jo-5.tistory.com/79
[Spotless] 클릭 한 번으로 코드 정리하기
Spotless란?코드 스타일 규칙을 자동으로 적용하여 코드베이스의 일관성 유지를 도와주는 오픈 소스 도구입니다.Gradle 플러그인으로 쉽게 통합할 수 있으며, Java, Kotlin, Groovy, Scala, Python, C, C++, Markdo
seongho-jo-5.tistory.com
반응형
'Framework > Spring Boot' 카테고리의 다른 글
| ClientAbortException (0) | 2024.05.16 |
|---|---|
| bucket4j를 이용한 요청 횟수 제한 (0) | 2024.05.11 |
| [Error] 'org.springframework.batch.core.configuration.annotation.JobBuilderFactory' that could not be found. (0) | 2024.05.06 |
| prometheus와 SpringBoot 연동 (0) | 2024.05.02 |
| [Error] No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer? (0) | 2024.04.28 |