pom.xml은 Maven Project의 설정 파일입니다.

Maven Project를 생성하고 pom.xml을 수정해야 합니다.

VScode에서 XML 확장자 설치 후 편집하시면 편합니다.

XML 열기 -> pom.xml 파일을 열고 우클릭 후 Open With -> Other -> External programs -> Code Worksapce Source File

 

** 추천 확장자 **

더보기

- XML

- XML Tools

- XML Format

- XML to JSON

 

 


 

 

 

Maven을 생성 후 pom.xml의 최상단에 다음의 DOCTYPE 태그를 추가해야 합니다.

 

<?xml version = "1.0" encoding = "UTF-8"?>

 

그 후 <project> 태그의 속성을 가독성 있게 정리합니다.

 

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

 

 

그 아래 태그들은 넘어갑니다.( groupId, artifactId, version )

 

 

<packaging> 태그는 Apache Maven을 통해 진행한 프로젝트의 최종 파일의 확장자를 결정합니다.

여기서 pom.xml은 jar 확장자로 되어 있습니다. 

웹앱 프로젝트에서는 war 확장자로 되어 있습니다.

 

<packaging>jar</packaging>
<!-- <packaging>war</packaging> -->

 

- <name> 태그는 진행하는 프로젝트의 이름입니다.

- <name> 태그 아래의 <url>은 프로젝트의 주소를 입력하는 곳인데 일반적으로 잘 사용하지 않습니다.

 

 

<properties> 태그는 속성을 정의합니다.

<properties> 가 감싸고 있는 부분은 자바 버전, 자바의 환경변수를 세팅합니다.

태그의 이름은 사용자가 임의로 지을 수 있습니다.

 

  <!--  현재 프로젝트에 필요한 속성을 정의하는 태그-->
  <properties>
    <java-version>17</java-version>
    <java-home>${env.JAVA_HOME}</java-home>
    
    <!-- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> defualt -->
  </properties>

 

그리고 <properties> 태그 위 아래로 두 칸씩, 사용자 정의 속성과 Encoidng은 1칸씩 공백을 두어 가독성을 높입니다.

 

 

그 아래 <dependencies> 태그는 필요한 라이브러리, 즉 의존성을 정의합니다.

의존성은 Maven Repository에서 <dependency> 태그로 넣으시면 됩니다.

추가된 의존성은 Maven Project 내부에 Maven Dependencies에서 확인할 수 있습니다.

 

자세한 의존성 정의 방법은 추후에 다루겠습니다.

저는 junit5와 lombok 의존성을 추가하였습니다.

 

  <dependencies>
  
    <!-- 테스트 코드 api -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    
    <!-- 추가된 롬복 의존성 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <!-- 의존성의 버전 -->
      <version>1.18.28</version>
      <!-- scope의 provided는 컴파일에 필요하며 Runtime일 때 제거한다는 의미 -->
      <!-- scoop 태그를 삭제하면 default가 compile -->
      <!-- 롬복은 런타임 시에도 필요하므로 scope 태그 제거 -->
      <!-- <scope>provided</scope> -->
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.20.0</version>
    </dependency>
    
  </dependencies>

 

의존성이 잘 정의됐는지 Dependency Hierarchy로 계층 구조를 확인합니다.

 

Dependency Hierarchy

 

log4j-core 의존성을 추가하면 log4j-api는 자동으로 추가됩니다.

 

 

마지막으로 <build> 태그를 정의합니다.

<build> 태그는  eclipse의 기능을 확장시키는 <plugin> 태그를 사용하기 위함입니다.

만약 웹앱 프로젝트로 생성하였다면 war 플러그인도 추가합니다.

 

  <build>
	  
    <finalName>/</finalName>

    <plugins>
       <!-- 웹앱 프로젝트 추가 플러그인 -->
<!--  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.4.0</version>
      </plugin> -->
      
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.10</version>

          <configuration>
              <downloadSources>true</downloadSources>
              <!-- <downloadJavadocs> == 자바 공식문서 다운로드 결정 -->
              <downloadJavadocs>false</downloadJavadocs>
          </configuration>
      </plugin>

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.11.0</version>

          <configuration>
            <release>${java-version}</release>
          </configuration>
      </plugin>

    </plugins>

  </build>

</project>

 

 

pom.xml을 단 1글자라도 수정하면 Maven project를 무조건 업데이트해야 합니다.

Maven Project를 선택하고 상단 Project 메뉴에 "Update Maven Project"로 진행합니다.

단축키는 "Alt + F5"를 누르시면 됩니다.

 

 

 

 

 

'Spring boot > Maven' 카테고리의 다른 글

Maven Dependency List  (0) 2023.09.01
JUnit5  (0) 2023.08.23
JUnit4  (0) 2023.08.22
Maven dependency 추가하기  (0) 2023.08.21

+ Recent posts