목차
- 디자인(Design)
- 용어(Terminology)
그레이들이란 무엇인가?(What is Gradle?)
그레이들은 거의 모든 타입의 소프트웨어를 구축할 수 있을 만큼 유연한 오픈 소스 빌드 자동화 도구다. 그레이들은 빌드하려는 대상이나 빌드 방법에 대해 미리 가정하지 않는다. 이는 그레이들을 특히 더 유연하게 만든다.
디자인(Design)
그레이들은 다음 기본 사항을 기반으로 디자인됐다.
고성능 그레이들은 입력(input) 또는 출력(output)이 변경되어 수행해야 하는 태스크만 실행하여 불필요한 작업을 방지한다. 그레이들은 다양한 캐시를 사용하여 이전 빌드의 출력을 재사용한다. 공유 빌드 캐시를 사용하면 다른 머신의 출력을 재사용할 수도 있다.
JVM 근본 그레이들은 JVM에서 실행된다. 빌드 로직이 표준 자바 API를 사용할 수 있으므로 이는 자바에 익숙한 사용자에게 보너스다. 또한 다양한 플랫폼에서 그레이들을 쉽게 실행할 수 있다.
컨벤션 그레이들을 사용하면 컨벤션을 통해 일반적인 타입의 프로젝트를 쉽게 구축할 수 있다. 플러그인은 빌드 스크립트를 최소화하기 위해 적절한 기본값을 설정한다. 그러나 이러한 컨벤션은 어떤 제한도 없다. 설정을 구성하고, 자신만의 태스크를 추가하고, 빌드에서 기타 다양한 커스텀을 할 수 있다.
확장성 대부분의 빌드에는 커스텀 빌드 로직이 필요한 특별한 요구 사항이 있다. 그레이들을 쉽게 확장하여 커스텀 태스크 및 플러그인으로 자체 빌드 로직을 제공할 수 있다. 예를 보려면 안드로이드 빌드를 참고하자. 플레이버(flavor) 및 빌드 타입(build type)과 같은 많은 새로운 빌드 개념이 추가된다.
IDE 지원 안드로이드 스튜디오, 인텔리J IDEA, 이클립스, VSCode, 넷빈즈(NetBeans)를 비롯한 여러 주요 IDE가 그레이들 빌드와 상호 작용 한다. 그레이들은 프로젝트를 비주얼 스튜디오에 로드하는 데 필요한 솔루션 파일을 생성할 수도 있다.
통찰력(Insight) Build Scan™은 문제를 식별하는 데 사용할 수 있는 빌드에 대한 광범위한 정보를 제공한다. 빌드 스캔을 사용하여 빌드 성능 문제를 식별하고 디버깅 지원을 위해 공유할 수도 있다.
용어(Terminology)
그레이들에 대해 자세히 알아보기 전에 다음 용어를 알아두면 도움이 된다.
프로젝트(Projects)
프로젝트는 그레이들이 빌드하는 것이다. 프로젝트에는 일반적으로 build.gradle
또는 build.gradle.kts
라는 프로젝트의 루트 디렉토리에 있는 파일인 빌드 스크립트가 포함되어 있다. 빌드 스크립트는 해당 프로젝트에 대한 태스크, 의존성, 플러그인 및 기타 구성을 정의한다. 단일 빌드에는 하나 이상의 프로젝트가 포함될 수 있으며 각 프로젝트에는 자체 하위 프로젝트가 포함될 수 있다.
태스크(Tasks)
태스크에는 코드 컴파일, 테스트 실행, 소프트웨어 배포 등 일부 작업을 실행하기 위한 로직이 포함되어 있다. 대부분의 사례에서 기존 태스크를 사용한다. 그레이들은 테스트를 실행할 수 있는 임베디드 자바 테스트 태스크와 같이 많은 일반적인 빌드 시스템 요구 사항을 구현하는 태스크를 제공한다. 플러그인은 더 많은 타입의 태스크를 제공한다.
태스크 자체는 다음으로 구성된다.
- 액션(Actions): 파일 복사나 소스 컴파일과 같은 작업을 수행하는 작업
- 인풋(Inputs): 태스크가 사용하거나 작동하는 값, 파일 및 디렉토리
- 아웃풋(Outputs): 태스크가 수정하거나 생성하는 파일 및 디렉토리
플러그인(Plugins)
플러그인을 사용하면 태스크, 파일 및 의존성 구성을 넘어 빌드에 새로운 개념을 도입할 수 있다. 예를 들어 대부분의 언어 플러그인은 소스 세트(source sets)
개념을 빌드에 추가한다.
플러그인은 여러 프로젝트에서 로직과 구성을 재사용할 수 있는 수단을 제공한다. 플러그인을 사용하면 태스크를 한 번 작성하고 여러 빌드에서 사용할 수 있다. 또는 로깅, 의존성, 버전 관리 등의 일반적인 구성을 한 곳에 저장할 수 있다. 이렇게 하면 빌드 스크립트의 중복이 줄어든다. 플러그인을 사용하여 빌드 프로세스를 적절하게 모델링하면 사용 편의성과 효율성이 크게 향상될 수 있다.
빌드 단계(Build Phases)
그레이들은 빌드 생명주기의 세 가지 빌드 단계에서 빌드 스크립트를 평가하고 실행한다.
초기화(Initialization) 빌드 환경을 설정하고 이에 참여할 프로젝트를 결정한다.
구성(Configuration) 빌드에 대한 작업 그래프를 구성한다. 사용자가 실행하려는 태스크를 기반으로 실행해야 하는 태스크와 순서를 결정한다.
실행(Execution) 구성 단계가 끝날 때 선택한 태스크를 실행한다.
빌드(Builds)
빌드는 그레이들 프로젝트에서 태스크 모음을 실행하는 것이다. 태스크 셀렉터(task selectors)를 지정하여 명령줄 인터페이스(CLI) 또는 IDE를 통해 빌드를 실행한다. 그레이들은 빌드를 구성하고 실행할 태스크를 선택한다. 그레이들은 요청된 태스크와 해당 의존성을 기반으로 가장 작은 전체 태스크 모음을 실행한다.