본 포스팅은 Java17 / Gradle / 인텔리제이 / MacOS 환경에서 쓰여졌다.
서론
스프링부트에서 사용되는 디렉토리(패키지) 구조와 build.gradle등의 설정 파일들을 소개하려 한다.
루트 폴더
스프링부트 프로젝트를 열어보면, 루트폴더에는 .gradle, .idea, build, gradle, src 폴더와 각종 파일이 존재한다.
src는 우리가 작성할 소스 코드와 리소스 파일이 저장될 곳이다. 하위 구조는 후술하겠다.
build.gradle은 프로젝트의 gradle 빌드 파일로, 의존성 관리, 플러그인 설정, 빌드 구성 등이 정의된다. 상세한 정보는 후술하겠다.
.gradle/gradle은 gradle 빌드 도구 관련 설정/캐시 등 관련 파일이 저장되고, .idea는 인텔리제이 관련 설정/캐시 파일, build는 빌드된 클래스 파일과 JAR 파일 등이 생성되는 폴더로, 초기 단계에서 열어볼 필요는 없다.
.gitignore는 깃 무시 파일, gradlew(.bat)는 Gradle Wrapper로 gradle 설치 없이도 프로젝트를 빌드할 수 있도록 해주는 파일, settings.gradle은 멀티 프로젝트 환경에서 각 프로젝트의 설정을 정의하는 파일이다. 이들 또한 초기 학습 단계에서는 열어볼 필요 없고 뭐하는 파일인지만 알아가두는게 좋다.
src/
src 아래에는 main 폴더와 test 폴더가 있다. main 폴더는 실제 빌드될 때 사용되고 test 폴더는 테스트용 소스 코드를 분리해둔 것이다.
src/main/java 아래에는 자바 파일들이 저장된다. 하위 폴더는 패키지 구조로 이뤄져있는데, 위 프로젝트의 패키지는 com.example.demo이기에 src/main/java/com/example/demo 아래에 소스코드가 위치한다.
[프로젝트명]Application.java는 가장 먼저 실행될 main 메소드가 있는 소스 파일이다.
src/main/resources 의 하위폴더로는 static과 templates로 나뉘고, static은 html이나 css, js와 같은 정적 파일들, templates에는 thymeleaf 등으로 쓰여진 템플릿 파일이 저장된다.
application.properties는 포트 정보, 데이터베이스와 연결할 때 필요한 정보, context-path 정보 등의 통신 관련 정보를 담는다.
src/test/java 아래에는 테스트 코드가 저장된다.
build.gradle
이 파일 자체가 Project 인터페이스를 구현하는 구현체로, Project 단위에서 사용되는 모든 메서드와 속성을 모아둔 슈퍼 객체이다.
plugins는 특정 작업을 하기 위해서 모아놓은 Task들의 묶음으로, 정의해야할 수많은 Task들을 축약할 수 있도록 도와준다.
group은 프로젝트를 생성할 때 적었던 그 group,
version은 현재 프로젝트의 버전을 뜻한다.
초기에 java 버전을 17으로 정했기에, java의 sourceCompatibility는 17으로 설정돼있다.
repositories는 프로젝트에 사용될 외부 의존성을 어디서 가져올 지를 지정한다. mavenCentral()은 많은 오픈 소스 라이브러리가 호스팅되어있는 기본 세팅이다.
dependencies는 프로젝트에서 사용하는 외부 의존성(라이브러리)의 모음이다. 여기서 의존성을 추가하거나 제거할 수 있다.
테스트를 할 때 JUnit을 사용하기 위한 코드이다.
다음으로
다음 포스팅에서는 MVC패턴과 그에 따른 추가적인 디렉토리 구조에 대해 다루도록 하겠다.
'현생 > spring boot' 카테고리의 다른 글
스프링부트 초기 세팅 (0) | 2024.01.15 |
---|