
IntelliJ를 이용하여 Spring Boot Project를 생성하면 기본적으로 생성해주는
파일들의 의미와 하는 일을 살펴보자.
- 생성 파일

프로젝트를 생성하면 사진과같이 몇 가지 파일이 생성된다. 이 중 .md 파일을 제외한 git, gradle관련 파일들을 살펴보자.
- .gitattributes
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
.gitattributes는 리포지토리에 특정 규칙 및 설정을 적용하기 위해 사용되는 파일이다. 기본적으로 파일을 생성하면 위와 같은 설정이 defualt로 적혀있다. 해당 규칙은 보통 운영체제에 따른 리딩 형식 차이 때문에 적용한다.
보편적으로 위와 같이 eol=lf, eol=crlf 라고 적힌 부분이 그 예시인데, window 환경에서 줄 바꿈은 crlf, mac 환경에서 줄 바꿈은 lf이기 때문이다. 여기서 eol은 End Of Line, lf와 crlf는 각각의 줄 바꿈 방식이다. 그렇다면 위의 /gradlew는 작성 형식이 lf(mac) 이기에 어느 환경에서 불러오든 lf형식을 따르라는 의미이며, *.bat의 경우는 반대로 crlf(window) 이므로 crlf 형식을 따르라는 의미이다.
더하여 text는 텍스트 파일로 처리, binary는 이진 파일로 처리한다는 뜻을 가지고 있다. 따라서 text와 eol은 필요 시 함께 사용하는 경우가 많다.
- .gitignore
HELP.md
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
.gitignore는 리포지토리에 특정 파일 또는 폴더를 제외하여 추적하도록 설정하는 파일이다. 가령 .env나 .yml과 같은 API KEY 또는 노출되지 않아야하는 부분을 git에서 추적하지 못하게해 리포지토리에 추가되지 않게한다.
https://www.toptal.com/developers/gitignore
해당 사이트를 이용하여 IDE, 언어별 기본적인 ignore 사항을 설정할 수 있으며 추가적으로 제외할 부분을 파일 내에 경로로 적어주면된다.
주의 사항 : 이미 리포지토리에 push한 파일은 그대로 남아있으니 최초에 설정하기!!
- build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.4'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.foo'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
// 주로 우리가 추가하는 부분
}
tasks.named('test') {
useJUnitPlatform()
}
build.gradle은 Project Object로 Project interface를 구현하는 구현체이다. 쉽게말해 프로젝트 내부의 모든 메서드와 프로퍼티를 모아놓은 집합체다.
plugins에서 가장 기본적인 java, spring, dependency 플러그인을 추가한다. 여기서 dependency-management를 사용하여 아래 dependencies에 부여하는 의존성 파일들의 버전을 Spring Boot dependency에 있는 버전으로 가져와준다.
우리가 대부분 신경써야 하는 부분은 dependencies다. 해당 부분에 의존성을 주입하지 않으면 원하는 라이브러리 및 API를 사용할 수 없다. 그렇다면 우리가 매번 긁어오는 한 줄의 dependency의 앞쪽에 붙은 configuration은 어떤 기준일지 알아보고 사용하자.
| compileOnly | 컴파일 시에만 사용, .jar에 미포함 |
| runtimeOnly | 런타임 시에만 사용, .jar에 포함 |
| implementation | 컴파일, 런타임 둘 다 사용 |
| annotationProcessor | 컴파일 시에 annotation 기반 참조 |
| test~ | 테스트 시에 상위 항목 앞에 붙여 사용 |
해당 configuration들이 보편적으로 많이 사용되는 친구들인듯하다.
- gradlew, gradlew.bat
각각 mac, window 환경에서 사용하는 gradle 실행 파일이다. gradle이 설치되어있지 않은 환경에서도 gradle 관련 실행을 할 수 있도록 해준다. (현재 수준에서는 별도의 수정은 필요 없을듯 하다.)
- setting.gradle
프로젝트가 모듈화되거나 하위 프로젝트와 연동이 필요한 상황에서 각각의 의존성을 부여해주는 셋팅 파일이다. 보통 싱글 프로젝트의 경우 전혀 건들 일이 없다. (경험해 보지 못한 영역)
- 종합
보편적인 싱글 프로젝트에서는 build.gradle의 dependencies와 .gitignore만 잘 신경써주면 될듯하다.
'Back-End > Spring Boot' 카테고리의 다른 글
| [Spring Boot] 순환 참조 해결하기 (2) | 2025.05.13 |
|---|---|
| [Spring Boot] 의존성 주입, @Autowired vs @RequiredArgsConstructor (0) | 2025.05.13 |
| [Spring Boot] FFmpeg + 스프링부트 연동 및 사용하기 (0) | 2025.05.12 |
| [Spring Boot] Global Exception, 무지성 try-catch 멈춰! (0) | 2025.05.11 |
| [Spring Boot] 기본 폴더 구성하기 및 연관 관계 (0) | 2025.05.11 |