pom.xml 파일은 Maven 프로젝트의 핵심 설정 파일이에요.
Java 프로젝트를 Maven으로 빌드할 때, Maven은 이 파일을 읽어서 프로젝트의 빌드 과정, 의존성(라이브러리) 관리, 패키징, 실행 환경 등을 자동화합니다.
POM = Project Object Model
pom.xml은 Maven이 프로젝트를 이해하기 위한 "설계도" 역할을 합니다.
즉,
이 정보를 바탕으로 Maven은 자동으로 라이브러리를 다운로드하고, 빌드(compile, test, package) 과정을 수행합니다.
<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>org.example</groupId>
<artifactId>test_study_2</artifactId>
<version>1.0-SNAPSHOT</version>
이 3개가 Maven에서 가장 중요한 “좌표(Coordinates)”입니다.
| 태그 | 의미 | 예시 |
| groupId | 조직명/도메인 이름 (프로젝트 그룹 식별자) | com.company.project |
| artifactId | 실제 프로젝트 이름 (JAR 이름이 됨) | account-service |
| version | 버전 정보 | 1.0.0, 1.0-SNAPSHOT 등 |
예: org.example:test_study_2:1.0-SNAPSHOT
이 세 값이 Maven 중앙 저장소에서 프로젝트를 고유하게 식별하는 ID입니다.
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
이제 핵심인 dependencies 부분을 보죠.
Maven은 “의존성 관리 도구”입니다.
즉, Java 프로젝트에서 다른 라이브러리(JAR)를 쓰려면 원래는 직접 jar를 받아서 classpath에 추가해야 했죠.
→ 하지만 Maven은 pom.xml에 라이브러리 이름만 써두면 자동으로 다운로드하고 빌드 시 classpath에 포함시켜줍니다.
예를 들어 Logback과 SLF4J를 추가하면 이렇게 됩니다 👇
<dependencies>
<!-- SLF4J API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
</dependency>
<!-- Logback 구현체 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.14</version>
</dependency>
</dependencies>
| 항목 | 역할 |
| pom.xml | 프로젝트 전체의 설정을 정의 |
| groupId, artifactId, version | 프로젝트 고유 식별자 |
| properties | 빌드 관련 공통 속성 |
| dependencies | 외부 라이브러리 자동 다운로드 및 포함 |
| build | 컴파일, 패키징, 실행 관련 설정 (선택적) |
<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>org.example</groupId>
<artifactId>test_study_2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- SLF4J API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
</dependency>
<!-- Logback Classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.14</version>
</dependency>
</dependencies>
</project>

| Base64 인코딩, 디코딩, AES-GCM 모드란? (예제 코드포함) (0) | 2025.11.18 |
|---|---|
| 로컬PC에서 logback.xml 파일 직접 생성해서 설정해보기 (0) | 2025.11.06 |
| APP api 연동방식에서 STM방식, App방식 각각 개념과 차이점은? (0) | 2025.11.05 |
| PUID란? (5) | 2025.08.16 |
| IT 개발에서 vue를 사용하는 이유와 장단점은? (4) | 2025.08.15 |