Computer Science/CS

[CS] Gradle

owls 2023. 3. 3. 14:15
728x90

Gradle

Groovy를 이용한 빌드 자동화 시스템입니다. Groovy와 유사한 도메인 언어를 채용하였으며, 현재 안드로이드 스튜디오의 공식 빌드 시스템입니다. Java, C/C++, Python 등 다양한 언어를 지원합니다.

 Ant 와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스 빌드 도구입니다.

(빌드 도구 : 소스코드를 실행가능한 애플리케이션 생성물을 자동으로 만드는 프로그램. 빌드 과정은 소스코드를 컴파일하고 연결하고 패키징하여 실행가능한 형태로 가공)

 

빌드 :

우리가 작성한 자바 코드를 비롯해 프로젝트에 쓰인 각각의 파일 및 자원(.xml, jpa, jpg, properties)등을 JVM이나 톰캣과 같은 WAS가 인식할 수 있도록 패키징하는 과정

 

빌드 관리 도구 :

개발자가 소스코드 작성해 어플리케이션 생성할 때는 여러가지 외부 라이브러리를 가져다 사용합니다. 이때 사용자가 직접 외부 라이브러리를 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리해주는 도구입니다.

 

빌드 자동화(Build Automation)

- 의존성 라이브러리 다운로드

- 컴파일 : 소스코드 → 바이너리 코드

- 테스트 실행

- 바이너리코드 패키징

- 운영시스템 배포

 

Java 에서 많이 사용되고 있는 빌드 도구로 Ant, Maven, Gradle이 있습니다.

 

Maven 특징

- XML기반으로 작성
- LifeCycle과 프로젝트 객체 모델(POM, Project Object Model) 이란 개념이 도입
- Ant의 장황한 빌드 스크립트를 개선
- pom.xml에 필요한 라이브러리를 선언하면 자동으로 해당 프로젝트를 불러와 편리
- 상대적으로 학습 장벽이 높음
- 라이브러리가 서로 의존하는 경우 복잡해짐

 

Gradle의 특징

1. 의존성 관리를 위한 다양한 방법을 제공하고 빌드 스크립트를 XML언어가 아닌 JVM에서 동작하는 
   스크립트 언어 "Groovy" 기반의 DSL(Domain Specific Language) 를 사용합니다.

2. Groovy는 자바 문법과 유사하여 자바 개발자가 쉽게 익힐 수 있는 장점이 있으며 Gradle Wrapper를 
   이용하면 Gradle이 설치되지 않은 시스템에서도 프로젝트를 빌드 할 수 있습니다.

3.Maven의 pom.xml을 Gradle 파일로 변환할 수도 있으며 Maven의 중앙 저장소도 지원하기 때문에 
  라이브러리를 모두 그대로 가져다 사용할 수 있습니다.

4. 필요한 라이브러리를 Maven의 pom.xml보다 훨씬 적은 코드 수로 간결하게 정의합니다.

5. 필요한 라이브러리를 프로젝트 설정 주입 방식(Configuration Injection)으로 정의해 
   Maven의 상속 구조보다 재사용에 용이합니다.

 

이처럼 Gradle은 유연함과 성능에 초점을 둔 오픈소스 빌드도구 입니다.

또한 Gradle에는 multi project builds, Wrapper  기능이 있습니다.

 

Project root directory

├── .gradle 
│   ├── 4.8 
│   ├── 4.9 
│   └── ⋮
├── build 
├── gradle
│   └── wrapper 
├── gradle.properties 
├── gradlew 
├── gradlew.bat 
├── settings.gradle or settings.gradle.kts 
├── subproject-one 
|   └── build.gradle or build.gradle.kts 
├── subproject-two 
|   └── build.gradle or build.gradle.kts 
└── ⋮
.gradle Gradle에서 생성한 프로젝트별 캐시 디렉토리
Build Gradle이 모든 Build Artifact를 생성하는 이 프로젝트의 빌드 디렉토리
wrapper Jar 파일 및 Gradle Wrapper구성
gradle.properties 프로젝트별  Gradle 구성 속성
Gradlew.bat Gradle Wrapper를 사용하여 빌드를 실행하기 위한 스크립트
settings.gradle 하위 프로젝트 목록이 정의된 프로젝트의 설정 파일

 

 

 

참고 URL: https://techblog.woowahan.com/2625/

 

‘Gradle Kotlin DSL’ 이야기 | 우아한형제들 기술블로그

{{item.name}} Developer life is Coding between Build and Deploy. 개발자 인생은 (프로젝트) 빌드와 배포 사이 삽질(=코딩)이다. — #월급쟁이개발자 허니몬 빌드도구(Build tool) 이야기 새로운 프로젝트를 시작하

techblog.woowahan.com

https://docs.gradle.org/current/userguide/directory_layout.html#dir:project_root

 

The Directories and Files Gradle Uses

The project root directory contains all source files that are part of your project. In addition, it contains files and directories that are generated by Gradle such as .gradle and build. While the former are usually checked in to source control, the latter

docs.gradle.org

 

728x90