ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Boot - 메이븐(Maven) vs 그래들(Gradle)
    Framework & Library/Spring Boot 2022. 1. 30. 14:38

    빌드 관리 도구

    빌드 관리 도구란?

    빌드 관리 도구란 프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구를 말한다. 소스 코드를 컴파일, 테스트, 정적 분석 등을 하여 실행 가능한 앱으로 빌드해주는 역할을 수행한다.

    외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트를 관리해 주는 것은 이러한 빌드 관리 도구의 가장 큰 사용 목적이다.

    자바의 대표적인 빌드 도구에는 Ant, Maven, Gradle이 존재한다.


    메이븐(Maven)

    메이븐(Maven)이란?

     

    자바의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발된 빌드 관리 도구이다. 프로젝트의 외부 라이브러리를 쉽게 참조할 수 있게 pom.xml 파일로 명시하여 관리하며, 참조한 외부 라이브러리에 연관된 다른 라이브러리도 자동으로 관리된다는 특징을 가지고 있다.

     

    메이븐(Maven)을 사용하는 이유

    기존에 사용하던 Ant는 빌드의 기능만을 가지고 있었다. 따라서, 빌드 외에 기능들은 개발자가 수동으로 관리해주어야 했다.

    하지만, 메이븐을 사용함으로써 자동으로 라이브러리를 관리해주고, 다운받아 사용하던 라이브러리에 변동 사항이 있으면 자동으로 업데이트해주는 기능이 추가되었다.

     

    Ant Maven
    ㆍ XML 기반의 빌드 스크립트
    ㆍ 자유로운 빌드 단위 지정
    ㆍ 간단하고 사용하기 쉬움
    ㆍ 대규 프로젝트에서 복잡해지는 경향
    ㆍ 라이프 사이클이 없음

    ㆍ XML 기반의 빌드 스크립트
    ㆍ 라이프 사이클의 도입
    ㆍ pom.xml로 편하게 Dependency 관리 가능

     

    메이븐(Maven)의 사용법

    pom.xml 파일을 활용하여 빌드 및 관리를 수행한다.

    pom.xml 파일 내에서 프로젝트에 대한 정보를 관리하고, 프로젝트 내에서 사용하는 외부 라이브러리를 관리할 수 있다.

     

     

    1. <modelVersion> : maven의 버전을 의미한다.

     

    2. <groupId> : 프로젝트 그룹 id를 뜻한다. 일반적으로, 대표하는 사이트 도메인을 역순으로 적어 사용한다. (ex : naver.com com.naver)

     

    3. <artifactId> : groupId 외에 다른 프로젝트와는 구분될 수 있는 프로젝트의 Id를 작성한다.

     

    4. <version> : 프로젝트에 사용되는 스프링 부트 프레임워크의 버전을 의미한다.

     

    5. <name> : 프로젝트의 이름을 의미한다.

     

    6. <description> : 해당 프로젝트에 대한 간략한 설명을 작성한다.

     

    7. <properties> : pom.xml 파일 내에서 빈번하게 사용되는 중복 상수를 정의하는 영역이다. 해당 영역의 상수를 사용하기 위해서는 ${태그명}의 형태로 사용한다.

     

     

    8. <dependencies> : 해당 프로젝트에서 의존성을 가지고 사용하는 라이브러리를 정의하는 영역이다. 각 라이브러리마다 <dependecy> 태그를 사용하여 구분한다.

     

     

    9. <build> : 프로젝트 빌드와 관련된 정보를 설정하는 영역이다.


    그래들(Gradle)

    그래들(Gradle)이란?

     

    Groovy 스크립트를 활용한 빌드 관리 도구이다. 메이븐에 비해 더 빠른 처리속도를 가지고 있으며, XML의 구조적인 틀에서 벗어나 더 간결한 구성이 가능하다.

    공통적으로 필요한 설정은 공통으로 주입하고, 모듈별로 필요한 설정들은 모듈별로 설정해두면 되기 때문에 멀티 모듈 프로젝트에서 용이하다.

     

    메이븐(Maven)과 그래들(Gradle)의 비교

    1. 점유율

    그래들에 비해 메이븐이 점유율이 더 높은 상황이지만 점차 그래들의 점유율이 올라가고 있다.

     

    2. XML vs Groovy

    ㆍ 메이븐은 빌드라는 동적인 요소를 XML로 정의하기 때문에 설정 내용이 길어지고 가독성이 떨어진다.

    ㆍ 그래들은 Groovy를 통해 더욱 간단하게 사용 가능하며, 동적인 빌드는 스크립트로 직접 코드를 구현해서 확장이 가능하다.

     

    3. 상속 구조 vs 설정 주입 방식

    ㆍ 메이븐의 상속 구조의 경우, 특정 설정은 소수의 모듈에서 공유하기 위해서 비어있는 프로젝트를 만들어 공통 설정을 넣고 해당 프로젝트를 상속하게 해야 한다. 이는 설정이 길어지고 복잡하기 때문에 가독성이 매우 떨어진다는 단점이 있다.

    ㆍ 그래들의 설정 주입 방식의 경우 필요한 프로젝트에 바로 주입하는 방식이다. 따라서, 공통적으로 필요한 설정은 공통으로 주입하고 모듈별로 필요한 설정들은 모듈별로 설정해두면 된다. 따라서, 멀티 모듈 프로젝트를 진행할 때 그래들의 설정 주입 방식이 더욱 효율적이다.

     

    4. 성능

    그래들이 메이븐보다 최대 100배 빠른 성능을 보인다. 이러한 그래들은 아래와 같은 특징을 가지고 있다.

    ㆍ 증분 성(Incrementality) : 그래들은 가능한 경우 변경된 파일만 작업해 중복 작업을 피한다.

    ㆍ Build Cache : 동일한 입력에 대해서 그래들 빌드를 재사용한다.

    ㆍ Gradle Demon : 빌드 정보를 메모리에 유지하는 프로세스를 구동한다.

     

    그래들(Gradle)의 사용법

     

    1. repositories : 라이브러리가 저장된 위치 등의 정보를 설정한다.

     

    2. mavenCentral : 기본 Maven Repository이다.

     

    3. dependencies : 라이브러리를 사용하 하기 위한 의존성을 설정한다.


    출처

    https://www.youtube.com/watch?v=3Jp9kGDb01g&list=PLlTylS8uB2fBOi6uzvMpojFrNe7sRmlzU&index=2&t=2s

    https://soyeon207.github.io/java/2021/07/22/java-build-tool.html


     

    GitHub - qlsdud0604/spring-boot-study

    Contribute to qlsdud0604/spring-boot-study development by creating an account on GitHub.

    github.com

     

    728x90

    'Framework & Library > Spring Boot' 카테고리의 다른 글

    Spring Boot - POST API  (0) 2022.02.01
    Spring Boot - GET API  (0) 2022.01.31
    Spring Boot - 프로젝트 구조 알아보기  (0) 2022.01.29
    Spring Boot - JPA의 영속성 컨텍스트  (0) 2021.12.02
    Spring Boot - JPA  (0) 2021.12.01

    댓글

Designed by Tistory.