상세 컨텐츠

본문 제목

Intellij 인텔리제이 공부하기 - pom.xml 파일 역할, 사용 방법

IT

by JR 2025. 11. 6. 07:24

본문

300x250
반응형

 

 

 


pom.xml 파일은 Maven 프로젝트의 핵심 설정 파일이에요.


Java 프로젝트를 Maven으로 빌드할 때, Maven은 이 파일을 읽어서 프로젝트의 빌드 과정, 의존성(라이브러리) 관리, 패키징, 실행 환경 등을 자동화합니다.

 


🧩 1. pom.xml의 역할

POM = Project Object Model
pom.xml은 Maven이 프로젝트를 이해하기 위한 "설계도" 역할을 합니다.

즉,

  • 어떤 프로젝트인지 (groupId, artifactId, version)
  • 어떤 Java 버전을 쓰는지
  • 어떤 외부 라이브러리를 쓸 건지 (dependencies)
  • 어떤 빌드 과정을 거칠지 (build)
    를 정의합니다.

이 정보를 바탕으로 Maven은 자동으로 라이브러리를 다운로드하고, 빌드(compile, test, package) 과정을 수행합니다.


🧱 2. 현재 pom.xml 구조 해석

<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">
  • 이건 XML 선언부와 네임스페이스 선언이에요.
    → Maven이 표준 구조를 인식하도록 하는 설정입니다.
    (이건 거의 모든 pom.xml에 공통적으로 들어갑니다.)

✅ 프로젝트 기본 정보

<modelVersion>4.0.0</modelVersion>
  • Maven POM 모델의 버전 (항상 4.0.0으로 고정)
<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>)

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
  • Java 컴파일러 버전과 인코딩 설정입니다.
  • 즉, “이 프로젝트는 Java 8 코드로 컴파일해라” 라는 뜻이에요.
  • UTF-8 인코딩을 지정해 한글 깨짐 방지에도 필요합니다.

🔗 3. dependency(의존성) 추가의 의미와 원리

이제 핵심인 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>

🔍 동작 원리

  1. Maven이 pom.xml을 읽음
  2. <dependencies> 태그를 스캔
  3. 각 dependency의 groupId, artifactId, version을 조합하여
    중앙 저장소(https://repo.maven.apache.org/maven2)에서 해당 JAR 파일을 찾음
  4. 해당 라이브러리와 그 하위 의존성까지 자동으로 다운로드
    → 예: Logback은 SLF4J도 자동으로 끌어옴
  5. .m2/repository 폴더(로컬 캐시)에 저장
  6. Maven 빌드 시 자동으로 classpath에 포함됨

🧩 정리하면

항목 역할
pom.xml 프로젝트 전체의 설정을 정의
groupId, artifactId, version 프로젝트 고유 식별자
properties 빌드 관련 공통 속성
dependencies 외부 라이브러리 자동 다운로드 및 포함
build 컴파일, 패키징, 실행 관련 설정 (선택적)

💡 실제 예시 (Logback 포함 완성형)

<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>

 

300x250
반응형

관련글 더보기