본문 바로가기
블로그 이미지
Dev-RiQ
Back-end Developer Studying Record
✉️ lwk525678@gmail.com
Back-End/Spring Boot

[Spring Boot] IntelliJ Spring Boot Project 생성 파일 분석

by Dev-RiQ 2025. 5. 13.

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만 잘 신경써주면 될듯하다.

 

블로그 이미지
Dev-RiQ
Back-end Developer Studying Record
✉️ lwk525678@gmail.com