Maven & Gradle

황현근·2023년 8월 17일
0

Spring Boot

목록 보기
3/3
post-thumbnail

🤔 Maven

Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 툴(build tool)이다.

Maven에 관한 자세한 내용은 아래 링크에 정리되어 있다.

https://velog.io/@hyeon_geun/Maven


📖 Gradle

Gradle이란 기본적으로 빌드 배포 도구(Build Tool)이다. 안드로이드 앱을 만들때 필요한 공식 빌드시스템이기도 하며 JAVA, C/C++, Python 등을 지원한다.

기본 메이븐의 경우 XML로 라이브러리를 정의하고 활용하도록 되어 있으나, Gradle의 경우 별도의 빌드스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리등의 항목을 설정 할 수 있다.

장점으로는 스크립트 언어로 구성되어 있기때문에, XML과 달리 변수선언, if-else, for등의 로직이 구현가능하여 간결하게 구성 가능하다.

  • 라이브러리 관리 : 메이븐 레파지토리를 동일하게 사용할 수 있어서 설정된 서버를 통하여 라이브러리를 다운로드 받아 모두 동일한 의존성을 가진 환경을 수정할 수 있다. 자신이 추가한 라이브러리도 레파지토리 서버에 올릴 수 있다.

  • 프로젝트 관리 : 모든 프로젝트가 일관된 디렉토리 구조를 가지고 빌드 프로세스를 유지하도록 도와준다.

  • 단위 테스트 시 의존성 관리 : junit 등을 사용하기 위해서 명시한다.

사용 예시

// 자바를 컴파일하기 위해 java plugin을 설정한다. 
apply plugin: 'java' 
// application으로 컴파일하기 위해 설정한다. 
apply plugin: 'application' 

//저장소를 입력하는 섹션이다. 주로 Maven의 저장소를 그대로 사용한다.
repositories { 
    mavenCentral()
}
//종속성을 입력하는 섹션이다. 기존에는 compile이 있었으나 3.0버전부터 deprecated 되었다.
dependencies {
    //'group:name:version' 순으로 적는다. group: 'junit', name: 'junit', version: '4.12'식으로도 가능하다.
    api 'com.google.guava:guava:22.0' //간접 의존, 직접 의존하는 모든 모듈을 rebuild 한다
    implementation 'junit:junit:4.12' //직접 의존하는 모듈만 rebuild 한다.
} 
application {
    // 메인 class의 위치와 이름을 적는다.
    mainClass = 'package.name.AppClass'
}

Gradle 특징

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

💡 Gradle vs Maven

빌드 속도가 Maven에 비해 10~100배 가량 빠르다.

0개의 댓글