Search
Duplicate
📝

[Devops Study] 02. Maven vs Gradle 빌드도구

상태
완료
수업
Devops Study
주제
4 more properties
참고

빌드란?

NOTE
소스코드 및 프로젝트에서 쓰인 각각의 파일을 컴퓨터에서 실행할 수 있는(JVM이나 WAS가 인식할 수 있는) 독립적인 형태로 변환하는 과정과 결과를 말한다!
라이브러리 추가, 버전 동기화에 특화적이다.

빌드도구

NOTE
소프트웨어 개발에 있어서 소스 코드를 실행가능한 애플리케이션으로 만들어주는 도구
빌드 과정을 자동화하여 관리하는 기능을 하기 떄문에 빌드 관리 도구라고 한다.

특징

개발자가 스크립트를 작성하여 다양한 작업을 수행할 수 있다.
소스 코드 컴파일, 패키징
테스트 자동수행
의존성 주입 및 배포작업
빌드도구 종류에 따라 스크립트 작성 문법이다르다.
XML
Groovy

빌드도구 종류와 차이점(Ant, Maven, Gradle)

NOTE

1. 앤트(Ant)

초기 자바 프로젝트 빌드로서 가장 널리 사용됨
XML 스크립트 기반
최근 빌드도구와 달리, 라이브러리 업데이트가 안됨

2. 메이븐(Maven)

Ant이후에 나온 자바 빌드 도구
XML 스크립트 기반, pom.xml 파일로 의존성을 관리한다.
Maven에서는 라이프 사이클개념이 도입되어 빌드 순서 정할 수 있음

3. 그래들(Gradle)

가장 최근에 나온 빌드 도구
Groovy 기반, Build.gradle에 스크립트를 작성한다.
대규모 프로젝트에서 XML기반에 비해 관리하기 편한 장점이 있다.
안드로이드 프로젝트의 표준 빌드 시스템으로 채택됨

Gradle을 사용해야 하는 이유

NOTE

1. 간결한 스크립트

Gradle이전의 Ant, Maven은 XML기반이라 닫는태그를 넣어야 해서 가독성이 떨어졌다.
GradleGroovy 문법으로 간결하게 작성이 가능하다.

2. 빌드속도

최대 100배까지 벌어질 수 있다고한다.
프로젝트 규모가 커질수록 빌드 속도는 굉장히 중요해진다.
Gradle캐싱(caching)을 하기 때문에 AntMaven 같은 빌드도구보다 빠르다!

3. 멀티 프로젝트 빌드

대규모 자바 프로젝트는 대부분 다중 모듈로 구성된다.
하나의 프로젝트 에서 여러 모듈이 동시에 개발된다!
Gradle의 멀티 프로젝트 빌드 기능을 이용하여 이러한 번거로움을 줄일 수 있다.

Gradle

NOTE
Gradle은 Groovy 언어를 기반으로 한 오픈소스 빌드 도구이다.
gradle 붙은거만 몇개여..
Groovy기반의 DSL(Domain Specific Language)를 사용한다.
Gradle 설치 없이 Gradle Wrapper를 이용해 빌드 지원.

gradle warpper

NOTE
폴더구조
이미 존재하는 프로젝트를 새로운 환경에서 별도의 설치 없이 곧바로 빌드할 수 있음!
JavaGradle도 설치할 필요가 없다!(버전도 신경쓸 필요없음)
wrapper는 사용자가 Gradle이 설치되어 있지 않아도 Gradle task를 실행할 수 있도록 해주는 작은 script, jar 및 등록 정보 파일

gradle-wrapper.jar

Wrapper 파일
gradlewgradlew.bat 파일이 프로젝트 내에 설치하는 이 파일을 사용하여 gradle task를 실행하기 때문에, 로컬 환경의 영향을 받지 않음.
(실제로는 Wrapper 버전에 맞는 구성들을 로컬 캐시에 다운로드 받음)

gradle-wrapper.properties

Graddel Wrapper 설정파일
이 파일의 wrapper 버전 등을 변경하면 task 실행시, 자동으로 Wrapper 파일을 로컬 캐시에서 다운로드 받음

gradlew, gradle.bat

NOTE
폴더구조

gradlew(유닉스), gradlew.bat(윈도우)

Gradle로 컴파일 또는 빌드할 때, 아래와 같이 하면 로컬에 설치된 gradle 사용
./gradlew build
Groovy
복사

build.gradle, settings.gradle

NOTE

build.gradle

의존성이나 플러그인 설정 등을 위한 스크립트 파일

settings.gradle

프로젝트의 구성 정보를 기록하는 파일
어떤 하위 프로젝트들이 어떤 관계로 구성되어 있는지 기술
Gradle은 이 파일에 기술된대로 프로젝트를 구성