maven이란
Java 프로젝트의 빌드 자동화 + 의존성 관리 도구이다.
maven이 없으면???
1. 프로젝트에 MySQL 드라이버가 필요함
2. mysql-connector-java.jar 직접 다운로드
3. 그런데 이 jar가 또 다른 jar에 의존함 → 또 다운로드
4. 버전 충돌 → 수동으로 해결
5. 팀원 PC에도 똑같이 세팅해야 함
6. 빌드할 때 javac 명령어 직접 입력...
팀프로젝트를 진행할 때 내가 사용한 라이브러리들을 일일히 다른 팀원들도 설치하기엔 번거롭다. 이를 해결하기 위해 maven이 나온것! 파일만 작성해두면 옮겨간 환경에 자동으로 설정을 해준다.
maven이 하는 일
- 의존성 관리 https://mvnrepository.com/ ← 이 사이트를 사용해 라이브러리 추가를 함
- pom.xml 에 필요한 라이브러리를 선언만 하면, Maven이 인터넷에서 알아서 다운로드한다.
- 빌드 자동화
- 명령어 하나로 컴파일 → 테스트 → 패키징까지 순서대로 실행된다.
pom.xml 파일
properties 블록 : 변수 선언
<properties>
<jdk.version>17</jdk.version>
<maven.compiler.release>${jdk.version}</maven.compiler.release>
<jakarta.servelt.version>6.0.0</jakarta.servelt.version>
<jakarta.servlet.jsp-api.version>4.0.0</jakarta.servlet.jsp-api.version>
</properties>
dependencies 블록 : 변수 사용
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${jakarta.servelt.version}</version> <!-- → 6.0.0 -->
<scope>provided</scope>
</dependency>
properties로 버전을 분리해서 사용하는 이유 :
버전을 변경할 때 전부 찾아서 수정해야 한다. 하지만 properties로 분리하면 한 줄만 바꾸면 전체적으로 적용이 가능하다. 재사용성과 유지보수정을 높이는 패턴이다.
라이브러리가 많아지면 아래와 같은 상황이 오기 때문이다.
<version>6.0.0</version>
<version>6.0.0</version>
<version>6.0.0</version>
<!-- 버전 바꿀 때 전부 찾아서 수정해야 함 -->
Maven vs Gradle
Intellij를 사용하는 입장에선 build.gradle 파일이 익숙하다. 둘 모두 하는 역할은 동일하다.
요즘은 Maven 대신 Gradle을 많이 사용한다고 한다. 역할은 동일하지만 문법과 속도가 다르다.
| Maven | Gradle | |
| 설정 파일 | pom.xml | build.gradle |
| 속도 | 상대적으로 느림 | 빠름 |
| 문법 | 길다 | 간결하다 |
'WEB' 카테고리의 다른 글
| 웹 서버(Web Server)와 WAS의 차이점 (0) | 2026.04.21 |
|---|