스프링 부트 웹 애플리케이션의 폴더 구조를 살펴보고 빌드 도구인 Maven과 Gradle의 역할과 구조에 대해 쉽게 설명드리겠습니다.
스프링 부트 폴더 구조
main
실제 코드를 작성하는 폴더로 프로젝트 실행에 필요한 모든 소스와 리소스 파일이 이 폴더 안에 위치합니다.
1. java - 자바 소스 코드가 들어가는 폴더로 애플리케이션의 패키지 구조에 맞게 클래스 파일이 위치합니다.
2. resource - 리소스 파일 (설정 파일, HTML, CSS, 이미지 등) 이 위치하는 폴더.
- application.properties
- application.xml
- 템플릿 엔진 파일 : Thymeleaf 템플릿 등
- static : 웹 애플리케이션의 정적 리소스(CSS, JavaScript, 이미지 파일) 를 담기 위한 폴더입니다.
- templetes : 폴더는 웹 애플리케이션의 서버 사이드 뷰 템플릿을 담기 위한 폴더입니다. 스프링부트는 Thymeleaf가 디폴트로 내장되어 있어 이 폴더에 위치하고 있습니다. 뷰 템플릿 엔진을 다른 것으로 변경하면 템플릿 파일들을 이 폴더에 위치시키면 됩니다.
test
프로젝트의 소스 코드를 테스트할 목적의 코드와 리소스 파일이 위치합니다. 애플리케이션의 기능을 검증하고 오류 검증을 위한 테스트 코드를 포함합니다.
1. java - main/java 폴더와 비슷한 패키지 구조를 가진 테스트를 위한 자바 소스 코드가 들어갑니다.
2. resource - 테스트 시 필요한 리소스 파일이 위치합니다.
여기까지 기본적인 폴더 구조이고, 빌드 도구가 Maven 이냐 Gradle 이냐에 따라 추가적인 폴더 구조가 달라집니다. 빌드 도구에 대해 더 알아봐야겠습니다.
빌드 도구
Maven (메이븐) 과 Gradle (그래들) 은 둘 다 Java 기반 프로젝트의 의존성 관리와 빌드 자동화를 지원하는 빌드 도구입니다.
의존성 관리 (Dependencies Management) 란 애플리케이션에 필요한 라이브러리들을 다운로드할 수 있게 도와주는 도구입니다. 한 라이브러리는 또 다른 라이브러리가 필요할 수 있습니다. 이처럼 한 라이브러리가 다른 라이브러리를 필요로 하는 경우 "의존성"이 있다고 할 수 있습니다.
스프링 부트는 어떤 한 라이브러리를 다운로드 받을 때 다른 라이브러리들도 같이 다운로드할 수 있도록 의존성 관리를 수행하며 이러한 의존성을 관리하는 도구가 빌드 도구입니다.
Gradle
다시, 스프링 부트 폴더 구조로 돌아가서 그래들의 경우를 살펴보겠습니다.
build.gradle
Gradle을 사용한 프로젝트에서 사용되는 빌드 설정 파일로 프로젝트의 의존성, 플러그인 설정, 빌드 스크립트 등을 정의합니다.
1. plugins - 프로젝트에서 사용하는 플러그인을 선언하는 부분입니다.
2. dependencies - 라이브러리 의존성을 선언하는 부분입니다.
settings.gradle
그래들 프로젝트의 설정 파일로 프로젝트의 이름을 설정하고 하위 모듈이 있는 경우 이들을 포함시키는 역할을 합니다.
1. rootProject.name - 프로젝트의 루트 이름을 정의합니다.
2. include - 멀티 모듈 프로젝트에서 하위 프로젝트를 포함시키는 설정
Maven
메이븐은 2004년에 출시된 프로젝트 빌드와 관리를 도와주는 도구입니다. 빌드 프로세스를 단순화하고 프로젝트 설정을 일관성있게 만들어 줍니다.
pom.xml - 프로젝트에 대한 정보 (디펜던시, 소스 폴더, 테스트 소스 폴더 등)를 XML형태로 저장합니다. 프로젝트 구조를 이해하는데 도움이 됩니다.
관련포스트 |
JAVA 프레임워크 | SPRING 프레임워크와 스프링 부트 소개 |
스프링 툴 스위트 (STS : Spring Tool Suite) 소개 |

'웹 개발 > 웹프로그래밍' 카테고리의 다른 글
HTML | 콘텐츠 삽입 태그 iframe, embed, object 비교 (102) | 2024.07.26 |
---|---|
Javascript | 사용자 정의 객체와 이벤트 객체 (81) | 2024.04.10 |
Javascript | 자바스크립트 객체 (내장, DOM, BOM) (33) | 2024.04.05 |
Javascript | 자바스크립트 기초 문법 (75) | 2024.04.03 |
Javascript | 비동기 처리 (콜백, 프로미스, await) (74) | 2024.04.01 |
Javascript | jQuery 유용한 플러그인과 라이브러리 소개 (53) | 2024.03.25 |
Javascript | jQuery UI 소개와 사용방법 (35) | 2024.03.22 |
파일업로드 dropzone.js 으로 손쉽게 구현하기 (84) | 2024.03.20 |
댓글
KISCH님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.