[Spring] Maven Project

2024. 5. 20. 18:28·Spring

스프링 Maven 프로젝트의 구조는 스프링 프레임워크를 기반으로 하는 Maven 빌드 도구를 사용하는 표준 자바 프로젝트 구조이다. Maven은 프로젝트 관리와 빌드를 자동화하는 도구로, 프로젝트의 라이프사이클을 관리하고 의존성을 해결하는 데 도움을 준다.

기본 디렉토리 구조

my-spring-project/
│
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── myproject/
│   │   │               ├── controller/
│   │   │               ├── model/
│   │   │               ├── repository/
│   │   │               ├── service/
│   │   │               └── MySpringApplication.java
│   │   │
│   │   ├── resources/
│   │   │   ├── static/
│   │   │   ├── templates/
│   │   │   ├── application.properties
│   │   │   └── application.yml
│   │   │
│   ├── test/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── myproject/
│   │   │               └── MySpringApplicationTests.java
│   │   │
│   │   ├── resources/
│   │   │   └── test-data.sql
│
├── .gitignore
├── mvnw
├── mvnw.cmd
├── pom.xml
└── README.md

 

주요 디렉토리 및 파일 설명

1. src/main/java/

스프링 애플리케이션의 주요 소스 코드가 위치하는 디렉토리이다. 패키지 구조에 따라 클래스 파일들이 정리된다.

  • MySpringApp.java: 스프링 부트 애플리케이션의 진입점 클래스이다. 주로 @SpringBootApplication 어노테이션을 사용하여 설정한다.
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringApp {
    public static void main(String[] args) {
        SpringApplication.run(MySpringApp.class, args);
    }
}

 

2. src/main/resources/

애플리케이션 설정 파일과 리소스 파일들이 위치하는 디렉토리이다.

  • application.properties: 스프링 부트 애플리케이션의 설정 파일로, 데이터베이스 연결 정보, 서버 포트 등 설정을 정의한다.
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

 

3. src/main/webapp/

웹 애플리케이션 관련 파일들이 위치하는 디렉토리이다. JSP 파일이나 HTML 파일과 같은 뷰 파일들이 포함된다.

  • WEB-INF/: 웹 애플리케이션의 구성 파일을 포함하는 디렉토리이다.
  • web.xml: 서블릿 설정 파일로, 스프링 MVC와 같은 웹 프레임워크의 초기화를 설정할 수 있다.
<web-app>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

 

  • views/: JSP, HTML 등의 뷰 파일들이 위치하는 디렉토리이다.
  • index.jsp: 기본 JSP 파일로, 예시로 단순한 HTML 콘텐츠를 포함할 수 있다.
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome to My Spring Application</h1>
</body>
</html>

 

4. src/test/java/

테스트 코드가 위치하는 디렉토리이다. JUnit이나 다른 테스트 프레임워크를 사용하여 작성된 테스트 클래스들이 포함된다.

  • MySpringAppTests.java: 스프링 애플리케이션을 테스트하는 클래스이다.
package com.example;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MySpringAppTests {
    @Test
    void contextLoads() {
    }
}

 

5. .gitignore

Git을 사용할 때 버전 관리에서 제외할 파일이나 디렉토리를 정의한다. 주로 빌드 아티팩트와 IDE 설정 파일들을 제외한다.

 

6. mvnw, mvnw.cmd

Maven Wrapper 스크립트로, 프로젝트에 포함된 특정 Maven 버전을 사용하여 빌드할 수 있게 한다. 이는 프로젝트를 설정하는 데 필요한 별도의 Maven 설치 없이도 빌드를 가능하게 한다.

7. pom.xml

프로젝트 객체 모델(Project Object Model) 파일로, 프로젝트의 의존성, 플러그인, 빌드 설정 등을 정의한다. Maven 프로젝트의 중심 파일이다.

 

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>myspringapp</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 

주요 구성 요소 설명

  • groupId: 프로젝트의 그룹 식별자이다. 보통 도메인 이름을 거꾸로 사용한다. 예: com.example.
  • artifactId: 프로젝트의 아티팩트 식별자이다. 프로젝트 이름과 유사하다. 예: myspringapp.
  • version: 프로젝트의 버전이다. 예: 1.0.0.
  • dependencies: 프로젝트에서 사용할 라이브러리들을 정의한다.
  • build: 빌드 플러그인과 관련된 설정을 포함한다. 

스프링 Maven 프로젝트의 구조와 각 구성 요소를 이해하면 스프링 애플리케이션 개발을 효과적으로 관리하고 빌드할 수 있다. 이 구조는 표준 Maven 디렉토리 레이아웃을 따르며, 확장성과 유지보수성을 높이는 데 도움이 된다.

저작자표시 (새창열림)

'Spring' 카테고리의 다른 글

[Spring] web.xml 한글 필터  (0) 2024.05.20
[Spring] File Upload  (0) 2024.05.20
[Spring] Annotation(Lombok)  (0) 2024.05.20
[Spring] MVC  (0) 2024.05.20
[Spring] Annotation  (2) 2023.10.18
'Spring' 카테고리의 다른 글
  • [Spring] web.xml 한글 필터
  • [Spring] File Upload
  • [Spring] Annotation(Lombok)
  • [Spring] MVC
whkim98
whkim98
꾸준히 내 것으로 만드는 게시글을 작성하자
  • whkim98
    내 일기장
    whkim98
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • Project
        • Insty
        • ERP
      • Cloud
        • NAVER CLOUD Web DevOps
        • Public
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
        • 리눅스마스터
        • AWS
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    javascript
    eGov
    web
    gitbash
    RDBMS
    코딩
    코테
    annotation
    html
    js
    node
    프로그래머스
    Cloud
    django
    spring
    정보처리기사
    jsp
    github
    Java
    Tomcat
    AdSP
    Python
    해시 암호화
    React
    Postman
    CORS
    brycpt
    SQLD
    git
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
whkim98
[Spring] Maven Project
상단으로

티스토리툴바