주말 밤, 야심차게 인텔리제이를 켰다. 코딩 연습을 하기 위해서다. 재료는 회사 프로젝트. 회사에선 멀티 모듈, 헥사고날 아키텍처로 개발하지만 혼자서 연습할 땐 레이어드 아키텍처를 사용하고 싶어 기본적인 설정 파일만 남기고 코드를 모두 지웠다.
하지만 시작부터 문제 발생😱 멀티 모듈 여기저기에 흩어져 있는 build.gradle을 루트 프로젝트에서 조립해보고자 했지만 혼자서 감으로 하는건 도저히 불가능했다.. [설정 파일은 남겨야됨 + 멀티 모듈을 지워야 함]의 늪속에서 때가 왔음을 느꼈다. Gradle을 학습해야 하는 때를...
개인적으로는 이렇게 어떤 기술에 대한 설명서를 읽어야 할 때가 제일 재미없다. 그래서 자바 스프링으로 월급을 받으면서도 Gradle에 대한 학습은 끝의 끝까지 미뤄왔다. 하지만 어쩌겠는가. 이것이 나의 일.. 내가 선택한 수행의 길.. DeepL의 힘을 빌려 Gradle에 대해 아.라.보.자
Gradle은 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 유연한 오픈 소스 빌드 자동화 도구이다. Gradle은 빌드하려는 대상이나 빌드 방법을 거의 고정하지 않아 유연하다.
Gradle이 빌드하는 것이 프로젝트이다. 프로젝트에는 빌드 스크립트가 포함되며, 일반적으로 빌드 스크립트는 프로젝트의 루트 디렉토리에 있는 build.gradle
또는 build.gradle.kts
라는 이름의 파일이다. 빌드 스크립트는 해당 프로젝트에 대한 태스크, 의존성, 플러그인 및 기타 구성을 정의한다. 단일 빌드에는 하나 이상의 프로젝트가 포함될 수 있으며 각 프로젝트에는 자체 하위 프로젝트가 포함될 수 있다.
태스크에는 코드 컴파일, 테스트 실행 또는 소프트웨어 배포와 같은 일부 작업을 실행하기 위한 로직이 포함되어 있다.
태스크는 다음과 같이 구성된다:
플러그인은 여러 프로젝트에서 로직과 구성을 재사용할 수 있는 수단을 제공한다. 플러그인을 사용하면 한번 작성된 태스크를 여러 빌드에서 사용할 수 있다. 또는 로깅, 의존성, 버전 관리와 같이 일반적으로 사용되는 구성을 한 곳에 저장할 수도 있다. 이로써 빌드 스크립트의 중복을 줄일 수 있다. 플러그인을 사용하여 빌드 프로세스를 적절하게 모델링하면 사용 편의성과 효율성을 크게 향상시킬 수 있다.
Gradle은 빌드 라이프사이클의 세 가지 단계에서 빌드 스크립트를 평가하고 실행한다:
초기화
빌드 환경을 설정하고 빌드에 참여할 프로젝트를 결정한다.
구성
빌드에 대한 태스크 그래프를 구성하고 설정한다. 사용자가 실행하려는 태스크에 따라 어떤 태스크를 어떤 순서로 실행해야 하는지 결정한다.
실행
선택된 태스크들을 구성 단계의 마지막에 실행한다.
빌드는 Gradle 프로젝트에서 태스크들을 실행하는 것이다. Gradle은 빌드를 구성하고 실행할 태스크를 선택한다. 요청된 태스크와 해당 의존성을 기반으로 가장 작은 태스크 집합을 실행한다.