Maven & Gradle

뭉이·2024년 11월 21일

Study

목록 보기
1/2
post-thumbnail

Maven, Gradle

maven과 gradle은 모드 빌드 관리 도구이다

1) 빌드

소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정괴 결과 말한다.
작성한 소스코드, 프로젝트에 쓰인 각각의 파일 및 자원을 JVM 혹은 Tomcat 같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물이다.

자원: .xml, .jpa, .jpg
JVM: JAva Virtural Machine
WAS: Web Application Server

'빌드 시작' --> 소스코드를 컴파일해서 .class로 변환
--> resource를 .class가 참조할 수 있는 적절한 위치로 옮김
--> META-INF와 MANIFEST.MF들을 하나로 압축

2) 빌드 관리 도구 (Build Tool)

소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데, 빌드 관리 도구는 사용자 관리 필요 없이 필요한 라이브러리들을 자동으로 관리한다.

  • 종속성 다운로드 - 전처리 (Preprocessing)
  • 소스코드를 바이너리 코드로 컴파일 (Complie)
  • 바이너리 코드를 패키징 (Packaging)
  • 테스트 실행 (Testing)

Build Tool: Ant, Maven, Gradle

Maven

Java 전용프로젝트 관리도구, Lifecycle관리 목적 빌드 도구, Apache Ant의 대안, 아파치 라이센스로 배포되는 오픈 소스 소프트웨어

특징

Lifecycle 관리도구로, 정해진 Lifecycle에 의하여 작업 수행한다.
전반적인 프로젝트 관리 기능 포함한다.

  • claean
    : 빌드 시 생성되어 있던 파일들 삭제

  • validate
    : 프로젝트 올바른지 확인 후, 필요한 모든 정보 사용할 수 있는 지 확인

  • complie
    : 프로젝트 소스코드를 컴파일하는 단계

  • test
    : 단위 테스트를 수행하는 단계
    test 실패 시 실패로 처리하고 스킵 가능하다

  • package
    : 실제 컴파일된 소스코드와 리소스들을 jar, war 등의 파일 배포를 위한 패키지로 만든다

  • verify
    : 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는 지 확인

  • site
    : 프로젝트 문서와 사이트 작성, 생성하는 단계

  • deploy
    : 만들어진 package 를 원격 저장소에 release하는 단계

    Maven은 필요한 라이브러리를 pom.xml에 정의한다 ---> 프로젝트 모델링

Apache Ant ==> 비교적 자유도 높음

Gradle

Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 Tool
Ant Builder과 Groovt script 기반으로 구축되어 기존 Ant 역할과 배포 스크립트 기능 모두 사용 가능

==> Spring Boot, Android에 사용

빌드속도: Maven에 비해 10~100배 빠르다.
--> Java, C / C++, Python 등 지원

Groovy

JVM에서 실행되는 스크립트 언어
JVM에서 동작하지만 소스코드 컴파일 X
Java와 호환되며, JAva class file 들을 Groovy class로 사용 가능
Java 문법과 유사

Gradle 특징

  • 가독성 좋음
    : 코딩에 의한 간결한 정의가 가능
  • 재사용 용이
    : 설정 주입방식(Configuration injection)을 사용하므로 재사용 용이
  • 구조적 장점
    : Build Script를 Groovy기반의 DSL를 사용하여 코드로서 설정정보 구성
  • 편리
    : Gradle 설치 없이 Gradle Wrapper 이용하여 빌드 지원
  • 멀티 프로젝트
    : Gradle 멀티 프로젝트 빌드 지원하기 위해 설계된 빌드 관리 도구
  • 지원
    : Maven 완전 지원

Maven vs Gradle

  • 스크립트 길이, 가독성면에서 Gradle이 우수
  • 빌드와 테스트 실행 결과 Gradle이 빠르다
  • gradle은 캐시 사용하므로 test반복 시, 실행결과 시간의 차이 커진다
  • 의존성이 늘어날수록 스크립트 품질 차이 커진다
  • maven은 Multi project에서 특정 설정을 다른 모듈에서 하면 상속 받아야하지만,
    gradle은 설정 주입방식 사용하므로 Multi project에 적합하다.
profile
컴퓨터와 대화하기

0개의 댓글