ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Project Object Model (POM)
    Java/Maven 2022. 8. 3. 11:55

    아래 내용은 maven이란? 설명 글에서 이어집니다


    목차

    1. Project Object Model(POM)이란?
      1. project  Object Model(POM의 목적
      2. project Object Model(POM)의 장점

    # Project Object Model(POM)이란?


    • Maven에서 지칭하는 Project Object Model(POM)이란, Maven 작업의 기본 단위를 나타내는 XML파일입니다.
    • Maven이 프로젝트를 빌드하는 데 사용한 프로젝트 및 구성 세부정보를 관리하는 POM(자바의 경우 pom.xml)파일입니다.

    # Maven 작업의 기본단위가 뭐에요?

     Maven에서 표기하는 작업의 기본단위에는


    1. 빌드 대상 디렉토리(dir)

    2. src/main/java인 원본 디렉토리

    3. src/test/java인 테스트 원본 디렉토리


     

     

    등이 있으며,

    이렇게 표기된 project building 정보들은

     

    Maven이 작업(task) 또는 목표(debug or test building) 등을  실행할 때,

     

    작업(목표)를 실행한 디렉토리에서 POM(자바의 경우 pom.xml)을 찾아 읽고,

    필요한 구성 정보를 얻은 다음,

     

    작업(목표)을 실행합니다.

     


    # 가볍게 보는 3초 요약


    Project Object Model
    = 프로그램 틀

    POM file
    = 프로그램 돌아가는데 필요한 정보들 총집합

    [예시]

    <?xml version="1.0" encoding="UTF-8"?>	// xml file 버전, encoding 정보입니다.
    
    <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
    ">
       // maven이 자동으로 생성한 maven 파일을 읽기위한 코드입니다.
       <modelVersion>4.0.0</modelVersion>	
    
        // 여러 프로젝트 가운데 해당 프로젝트를 구분할 수 있게 해주는 식별자입니다.
        <groupId>Group_release</groupId>	
        
        // 버전 정보를 생략한 jar 파일 이름입니다.
        <artifactId>step06_practice</artifactId>	
        
        // develop가 지정하는 해당 프로젝트의 버전 정보입니다(표기안해도 무관)
        <version>1.00</version> 	
        
        // 메이븐 프로젝트가 생성하는 아티펙트 유형을 지정합니다
        // packaging은 일반적으로 jar, war, pom 혹은 다른 exe 파일 등이 있습니다
        <packaging>war</packaging>
        
    // 이하 생략

     

    * TMI "<packaging> 에 관하여"

    jar (Java ARchive)

    • 제일 많이 쓰임, 이러한 패키징은 .jar로 압축되는 타입을 사용할 수 있게 해줌. 

    war(web application ARchive)

    • 웹 애플리케이션과 관련한 모든 파일을 포함함

    ear(Enterprise application ARchive)

    • J2EE 응용 프로그램을 포함하는 압축 패키지임, EJB 모듈(jar file package) 또는 웹 모듈(war file package)이 하나 이상 포함된 모듈임.

    pom(among all packaging type)

    • 걍 위 패키지들의 parent 정도,  아직 뭘 만들지 안정했을 때 이거다 

    이하 생략

    [출처 및 더 자세한 내용 탐구하기]

     


     

    Question

    • 아하 알겠습니다, 저러한 project object model에 필요한 정보(library 등)들을 자동으로 정리하고 java 파일 실행 시 자동으로 실행해 준다면, 프로젝트 building 과정에 필요한 라이브러리 등을 관리하기 훨씬 편해지겠군요!
    • 그렇다면 모든 프로젝트에서 maven library를 사용해 pom file을 생성하고 관리하는 것이 이득이겠군요??


    Answer

    1. 그렇다

    더보기

    짝짝짝 정답입니다 :)

     

    maven과 같은 빌드툴은 프로그램 개발 속도를 향상시켜주며, 여러 기업에서 이러한 빌드 툴을 사용하고 있는 만큼 협업시 많은 이점을 갖는다. 


    2. 아니다

    더보기

    챱챱챱 정답입니다 :)

     

    maven과 같은 빌드툴은 해당 툴에대한 의존성을 높여주며, 개발 도중 버그가 발생할 가능성이 높아지며 버그가 발생했을 때, 빌드툴에서 에러가 발생된 경우 해결하는데 많은 비용이 발생할 수 있다. 


     

    # 글을 마치며,

     

    1. maven이 만든 pom.xml 파일을 확인하면, 프로젝트의 전체적인 개요를 살펴볼 수 있다.

    2. maven말고도 gradle을 이용해 pom파일을 생성할 수 있으며, 최근 트랜드는 gradle이 점차 점유율을 확보하고 있다. (2022.08.04)

    3. 결국 pom파일은 각 툴마다 정의하는 방법이 조금씩 다르므로 전체적인 pom 파일의 특성을 알아보는데 초점을 맞춰학습하는 것이 효율적이라 생각한다. 

     


    출처

     

    'Java > Maven' 카테고리의 다른 글

    Central Piece of Information  (0) 2022.08.03
    Project management, comprehension tool  (0) 2022.08.02
    Maven이 뭐에요?  (0) 2022.08.02
Designed by Tistory.