쉽게 설명드리겠습니다. 정리해봤습니다. 살펴보겠습니다. 소개해드립니다.
Maven 이란?
* 소개
아파치 메이븐은 자바 기반 프로젝트의 빌드, 의존성 관리, 프로젝트 관리를 자동화하기 위해 사용되는 빌드 도구 (Build Tool)입니다. 자바 개발에서 널리 사용되며, XML 기반의 설정 파일을 통해 프로젝트 구성을 정의합니다.
* 주요 기능
1. 빌드 자동화 - 소스 컴파일, 테스트 실행, JAR/WAR 파일 생성, 배포 등 자동으로 처리
2. 의존성 관리 - 외부 라이브러리를 중앙 저장소에서 자동으로 다운로드하고 관리
3. 표준화된 프로젝트 구조 - 메이븐은 정해진 디렉토리 구조를 따라 일관된 개발 환경을 제공합니다.
4. 플러그인 기반 아키텍쳐 - 다양한 플로그인을 통해 기능을 확장할 수 있습니다.
5. 멀티 모듈 프로젝트 지원 - 여러 개의 서브 프로젝트를 하나의 루트 프로젝트로 구성해 관리 가능합니다.
Maven 구조
my-project/
├── pom.xml
└── src/
├── main/
│ ├── java/
│ ├── resources/
│ ├── filters/
│ └── webapp/
│ └── WEB-INF/
└── test/
├── java/
└── resources/
* pom.xml
pom.xm은 Maven의 핵심 설정 파일로 프로젝트의 이름, 버전, 의존성, 플러그인, 빌드 설정 등을 정의합니다.
* src 디렉토리
모든 소스 코드와 리소스가 이 폴더 안에 들어가게 됩니다.
src/main - 애플리케이션 코드를 포함합니다.
src/main/java - Java 소스 파일이 들어가는 폴더입니다.
src/main/resources - 설정 파일, 정적 리소스, 프로퍼티 파일 등이 위치합니다.
src/main/filters - 환경별 설정 분리 시 사용됩니다.
src/main/webapps - 웹 애플리케이션 리소스(HTML, JSP, CSS, JS, 이미지 등)
- WEB-INF 폴더 안에 web.xml 같은 설정 파일이 위치합니다.
src/test - 테스트 코드와 관련된 모든 것이 위치합니다.
src/test/java - JUnit 등의 프레임워크를 사용하는 테스트 클래스 작성 위치
src/test/resources - 테스트에서 사용되는 설정 파일, 더미 데이터, 리소스 파일 등
* target 디렉토리
빌드 후 생성되며 컴파일된 .classs 파일, 패키징된 .jar 또는 .war 파일, 테스트 결과 등이 이 디렉토리에 저장됩니다.
Maven 라이프 사이클
메이븐은 동작 방식이 정해져 있으며 빌드 순서를 통해 어떻게 동작하는지 살펴보겠습니다.
* Life Cycle
1. Default(Build) - 일반적인 빌드 프로세스를 위한 모델
2. Clean - 빌드시 생성되었던 파일들을 삭제하는 단계
3. Validate - 프로젝트가 올바른지 확인하고 필요한 정보를 사용할 수 있는지 확인하는 단계
4. Compile - 프로젝트의 소스코드를 컴파일 하는 단계
5. Test - 유닛 테스트를 수행하는 단계
6. Package - 실제 컴파일된 소스 코드와 리소스들을 jar, war 등의 배포를 위한 패키지로 만드는 단계
7. Verify - 통합 테스트 결과에 대한 검사를 실행해 품질 기준을 충족하는지 확인하는 단계
8. Install - 패키지를 로컬 저장소에 설치하는 단계
9. Site - 프로젝트 문서와 사이트 작성, 생성하는 단계
10. Deploy - 만들어진 package를 원격 저장소에 release하는 단계
| 관련포스트 |
| 스프링부트 웹프레임워크 구조와 빌드 도구 |
| 프론트엔드와 백엔드(웹서버, 웹애플리케이션, 웹프레임워크) |
| 웹 서버와 웹 애플리케이션 서버(WAS)의 차이 설명 |
| JAVA 프레임워크 | 스프링(SPRING) 프레임워크와 스프링 부트 소개 |
'컴퓨터공학 > 개발환경' 카테고리의 다른 글
| VScode 코드 정렬하기 (웹사이트 vs 확장프로그램) (6) | 2025.06.26 |
|---|---|
| Git | Git Bash 로 Github 에 프로젝트 업로드 (3) | 2025.04.24 |
| Git | 깃허브 README.md 과 .gitignore 설명 (3) | 2025.04.21 |
| Git | VScode 와 깃허브 (Github) 쉽게 연동하기 (2) | 2025.04.09 |
| Git | 깃허브 (Github) 기초 용어 및 개념 (1) | 2025.04.07 |
| 인텔리제이 (IntelliJ) 설치 및 기본 사용법 (1) | 2025.04.04 |
| 이클립스 다운로드 및 설치, 스프링부트 개발 환경 설정 (1) | 2025.04.02 |
| 이클립스 (Eclipse) 기본 사용법과 퍼스펙티브 (4) | 2025.03.31 |
댓글