Spring Boot) Maven과 Gradle

나나·2022년 3월 11일
0

스프링 부트

목록 보기
1/12
post-thumbnail

대표적인 자바의 빌드 관리 툴인 Maven과 Gradle에 대해 알아보자.

빌드 관리 툴이란?

프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구를 말한다.

빌드 관리 툴이 하는 일

  • 소스 코드를 컴파일, 테스트, 정적 분석 등을 하여 실행가능한 앱으로 빌드
  • 프로젝트 정보 관리, 테스트 빌드, 배포 등의 작업 진행
  • 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트 관리
    - Maven이나 Gradle을 사용하는 가장 주 목적 (이전에는 수동으로 직접 다운로드 및 업데이트를 해줘야 했음)

자바의 대표적인 빌드 도구

  • Ant
  • Maven
  • Gradle

Maven

메이븐(Maven)은 자바의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발된 빌드 관리 툴이다.

프로젝트의 외부 라이브러리를 쉽게 참조할 수 있게 pom.xml 파일로 명시하여 관리하고, 참조한 외부 라이브러리에 연관된 다른 라이브러리도 자동으로 관리된다.
pom.xml 파일

Maven을 사용하는 이유

기존에 사용하던 Ant는 빌드의 기능만 가지고 있다. 그래서 그 외의 기능들은 수동으로 개발자가 직접 관리를 해줘야 했다.

그 이후 Ant를 대체하기 위해 개발된 Maven은 자동으로 라이브러리를 관리해주고, 다운받아 사용하던 라이브러리에 변동 사항이 있을 경우 자동으로 업데이트도 해주기 때문에 자주 사용이 된다.

Ant vs. Maven

  1. Ant
    • XML 기반의 빌드 스크립트
    • 자유로운 빌드 단위 지정
    • 간단하고 사용하기 쉬움
    • 대규모 프로젝트에서 복잡해지는 경향이 있음
    • 라이프 사이클이 없음
  2. Maven
    • XML 기반의 빌드 스크립트
    • 라이프 사이클 도입
    • pom.xml로 편하게 Dependency 관리

Maven 간단 사용법

사실 직접 해보는 게 가장 습득이 잘 된다. 내용상으로만 확인해보고 직접 한번 해보자.

1. pom.xml 파일을 활용하여 빌드 및 관리

💡 pom.xml의 역할

  • 프로젝트 정보 관리
  • 해당 프로젝트에서 사용하는 외부 라이브러리 관리
  • 해당 프로젝트의 빌드 관련 설정

💡 Maven 대표 태그 설명

  • modelVersion: maven의 버전
  • groupid: 프로젝트 그룹 id를 뜻하며, 일반적으로 대표하는 사이트 도메인을 역순으로 적어 사용 (ex. nana.studio -> studio.nana)
  • artifactid: groupid 외에 다른 프로젝트와 구분될 수 있는 프로젝트의 id를 작성
  • version: 프로젝트의 버전을 의미하며 개발 단계에 따라 구분하여 작성
  • name: 프로젝트의 이름
  • description: 해당 프로젝트의 간략한 설명을 작성
  • properties: pom.xml 파일 내에서 빈번하게 사용되는 중복 상수를 정의하는 영역. 해당 영역의 상수를 사용하기 위해서는 ${태그명}의 형태로 사용하면 됨.
  • dependencies: 해당 프로젝트에서 의존성을 가지고 사용하는 라이브러리를 정의하는 영역. 각 라이브러리마다 <dependency> 태그를 사용하여 구분.
  • build: 프로젝트 빌드와 관련된 정보를 설정하는 영역

Gradle

그래들(Gradle)이란 Groovy 스크립트를 활용한 빌드 관리 도구이다.

현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 사용되고 있고, 멀티 프로젝트(Multi-Project)의 빌드에 최적화하여 설계되었다.

Maven에 비해 최대 약 100배 정도 더 빠른 처리속도를 가지고 있으며 Maven에 비해 더 간결한 구성이 가능하다.

Gradle vs. Maven

  • Gradle에 비해 Maven의 점유율이 더 높은 상황이지만, 점차 Gradle의 점유율도 오르고 있다.
  • Gradle에 비해 Maven의 성능이 떨어진다.
  • Maven에 비해 Gradle이 대규모 프로젝트에서의 성능이 좋다.
  • Maven : pom.xml ↔ Gradle : build.gradle
  • Gradle은 설치 없이 사용할 수 있다. (Gradle Wrapper)

💡 Gradle 대표 용어 설명

  • repositories: 라이브러리가 저장된 위치 등 설정
  • mavenCentral: 기본 Maven Repository
  • dependencies: 라이브러리 사용을 위한 의존성 설정

💡 대표 Repository Site
Maven Repository: https://mvnrepository.com/

참고
어라운드허브 스튜디오

profile
코린이의 둥당둥당 개발일지

0개의 댓글