Framework/Spring Boot

Spotless로 백엔드 코드 포맷팅 자동화하기

잔망루피 2026. 1. 31. 13:12

플러그인 추가

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

 

반응형