> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/web/back-end/spring-boot/project-structure.md).

# 프로젝트 구조

Spring Boot Project의 파일 구조와 역할에 대해서 살펴본다.

## 프로젝트 구조

Spring Boot Project의 구조는 다음과 같다.

<details>

<summary>boot00</summary>

* src
  * main
    * java
      * Boot00Aplication.java
      * ServletInitializer.java
    * resources
      * static
      * template
      * application.properties
  * test
    * java
      * com.hacademy.boot00
        * Boot00ApplicationTest.java
* target
* help.md
* mvnw
* mvnw\.cmd
* pom.xml

</details>

## src

프로젝트를 구성하는 source 파일이 위치하는 곳.

용도에 따라 다양하게 구분하여 사용한다.

* <mark style="color:blue;">`src/main`</mark> - 배포될 프로젝트에 포함되는 내용들이 위치하는 곳
  * <mark style="color:blue;">`src/main/java`</mark> - Java Source File이 위치하는 곳
    * <mark style="color:blue;">`Boot00Application.java`</mark> - Spring Boot App이 시작하는 main 파일
    * <mark style="color:blue;">`ServletInitializer.java`</mark> - Web Container에 배포될 경우 운영 설정 파일
  * <mark style="color:blue;">`src/main/resources`</mark> - 설정파일과 정적 컨텐츠가 위치하는 곳
    * <mark style="color:blue;">`static`</mark> - 정적 컨텐츠 파일의 위치(ex : 이미지, 스크립트 등)
    * <mark style="color:blue;">`templates`</mark> - Thymeleaf 등 HTML 기반 템플릿 파일의 위치
    * <mark style="color:blue;">`application.properties`</mark> - Spring Boot 중앙 설정파일(yml로 치환가능)
  * <mark style="color:blue;">`src/main/webapp`</mark> - (구) 설정파일의 위치. (현) JSP 파일의 위치
* <mark style="color:blue;">`src/test`</mark> - 배포될 프로젝트에 포함되지 않는 테스트 코드가 위치하는 곳

## pom.xml

maven 중앙 설정 파일.&#x20;

프로젝트의 정보와 의존성, 빌드 방식에 대한 상세한 정보가 기술되어 있다.&#x20;

## target

maven build의 결과물이 생성되는 위치.

생성 시마다 파일이 변경되므로 Git과 같은 버전관리 시스템에서 관리되지 않도록 제외 설정한다.

## HELP.md

Spring에서 제공하는 프로젝트 기본 설명서 파일. Markdown 형식으로 작성되어 있으며 Reference Documentation과 Guides에 대한 Link가 존재한다.

## mvnw

<mark style="color:blue;">`mvnw`</mark>와 <mark style="color:blue;">`mvnw.cmd`</mark>는 각각 Linux bash와 Window command line에 맞게 만들어진 Maven Wrapper 파일이다. 이를 통하여 별도의 Maven 설치 없이 프로젝트 내에서 Maven을 사용할 수 있다.

* <mark style="color:blue;">`mvnw`</mark> - Linux 계열을 위한 파일
* <mark style="color:blue;">`mvnw.cmd`</mark> - Windows를 위한 파일
