[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
      • DevOps
  • 블로그 메뉴

    • 홈
    • GitHub
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바