Gradle이라는 빌드 자동화 툴을 처음으로 설치해보게 되었다. 그렇게 나름 개발을 조금 해왔다고 생각했는데도 자동화 툴 조차 사용 안해봤다니.. 괜찮아 지금이라도 사용해봄을 다행으로 느끼며 차근차근 해보자.
Gradle이 완전 처음이라 먼저 공식 docs를 보면서 얘가 뭐하는 애인지, 어떻게 설치해야 하는지 등을 파악해보기로 했다. 공식 docs는 이 링크를 따라가면 된다. 현재 Gradle에는 4, 5, 6, 7 버전을 이용할 수 있었는데 조금 찾아보니 너무 아래 버전은 Spring Boot를 이용할때 오류가 난다는 글이 몇가지 있었다. 따라서 나는 버전 7를 기준으로 알아보고, 설치할 것이다.
Gradle 이란 무엇인가?
https://docs.gradle.org/7.3.1/userguide/what_is_gradle.html
공식 문서에 Gradle이 무엇인지 잘 설명되어 있다. 나는 뭐 위의 전문을 해석하는 개념이 아니라 내가 이해한 내용을 정리하는 형식으로 글을 쓸 것이므로, 전문이 궁금하신 분들은 위의 공식 문서를 참고하시면 된다. 혹시나 내 이해가 잘못된 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
Gradle은 앞서 말했던 것 같이 오픈소스 빌드 자동화 툴이다. 그럼 그래 다 알겠는데 빌드는 도대체 뭘까? 빌드는 내가 작성한 프로그램을 실행할 수 있는 프로그램으로 산출하는 과정이다. 따라서 빌드 과정을 최종적으로 거쳐야만 프로그램 형태로 내가 짠 프로그램이 나오는 것이다. 빌드를 하지 않는다면 소스코드를 직접 Run 하면서 프로그램을 돌려봐야겠지.
Gradle은 꼭 필요한 task만 실행하도록 빌드하여 불필요한 실행을 줄여 성능을 높였고, 프로그램 실행 중 이전에 실행한 task의 결과물을 나중에 써야 할 경우 build cache를 이용하여 다른 task가 필요로 하는 input 값을 조금 더 빨리 참조하도록 하여 성능을 높였다고 한다. 또한 Gradle은 JVM 위에서 돌아가기 때문에 빌드 로직을 짤 때 표준화된 Java API를 사용할 수 있어 애초에 Java 플랫폼 위에서 개발하는 사람들에게는 친숙할 것이다. 그렇다고 Gradle이 JVM 위에서 돌아간다고 JVM 프로젝트만 빌드 가능한 것이 아니라 어떤 프로젝트라도 빌드 가능하며, 단순히 그 빌드 과정이 JVM 위에서 돌아갈 뿐이다. 그리고 많은 IDE들에서 Gradle을 잡아서 돌릴 수 있으므로, 편리한 개발이 용이하다.
Gradle은 범용 목적의 빌드 자동화 툴이기 때문에, 빌드를 하기 위해 필요한 제약이 거의 없다. 꼭 지켜야 하는 제약조건이 있다면 의존성 문제 정도? Gradle을 이용하여 빌드하려는 사람이 지켜야 할 사항이 거의 없기 때문에 Gradle을 이용하여 편리하게 빌드를 할 수 있다. 또한 Gradle이 빌드를 할 때 모든 task를 기준으로 DAG 그래프를 작성하여 어떤 일을 하기 위해 어떤 task가 가장 먼저 실행되어야 하는지, 그 순서는 무엇인지 파악하기가 용이하다. 거의 모든 빌드 작업에서 task를 이와 같이 DAG로 표현할 수 있기 때문에 Gradle은 매우 유연한 빌드 자동화 툴이라고 할 수 있는 것이다.
이를 위해 Gradle은 빌드 스크립트를 3가지 부분으로 나누어 평가하고, 실행한다.
1. Initialization
빌드할 환경을 선택하고, 어떤 프로젝트가 빌드에 포함될 것인지를 결정함.
2. Configuration
Task 그래프(위에서 언급한 DAG 기반의 그래프)를 구성하여 사용자가 원하는 task를 실행하기 위해서는 어떤 task들이 어떤 순서대로 실행되어야 하는지를 결정함.
3. Execution
Configuration 단계의 마지막 부분에서 사용자가 선택한 task를 실행함.
대부분의 프로젝트들이 Gradle로 빌드가 가능하지만, 프로젝트에는 여러가지 특별한 요구사항이 있을 수 있으므로 단순히 Gradle 내부의 빌드 스크립트만으로는 빌드하기가 어려울 가능성이 높다. 따라서 사용자들은 쉽게 빌드 로직을 추가하여 자신만의 프로젝트를 빌드할 수 있다. 또한 이러한 custom task나 custom script를 추가할 때 이미 공개되어있는 Gradle의 build API를 참고하여 빌드 과정이 어떻게 돌아가는지, 필요한 로직은 무엇인지를 확실히 하며 로직을 확장해 나갈 수 있다.
Gradle 설치하기
https://docs.gradle.org/7.3.1/userguide/getting_started.html
Gradle 공식 docs에 따르면 사용자가 하려는 일이 단순히 이미 존재하는 Gradle build를 실행하는 일이라면 Gradle을 굳이 설치할 필요는 없다. 하지만 새로운 빌드를 만들거나 이미 존재하는 빌드에 또 다른 Gradle build를 추가하려는 경우에는 아래의 절차를 따라서 Gradle을 설치해야 한다. 나는 앞으로 개발할 내 프로젝트 빌드를 해야 하므로 Gradle을 설치해야 한다.
설치 환경
Gradle을 설치하기 위해서는 JDK 버전 8 이상만 미리 설치되어 있으면 된다. JDK 설치 방법은 이전 포스팅에 올려두었으니 혹시 참고하실 분들은 참고 부탁드립니다.
나는 이미 JDK 8 이상이 설치되어 있으므로, 바로 Gradle 설치를 진행했다. 나의 환경은 macOS Monterey, M1, openjdk 1.8.0_312 이다.
패키지 매니저로 설치하기
macOS에서는 Homebrew와 같은 패키지 매니저들을 많이 사용한다. 그 이유는 패키지 매니저 없이는 패키지가 하나하나 업데이트가 필요할 때 그걸 관리하기가 어렵고, 애초에 업데이트가 필요한지를 확인하는것부터 어렵기 때문이다. 또한 버전 바꾸거나 그럴때도 용이하기 때문에.. 나도 Homebrew를 사용한다.
Homebrew를 이용하여 Gradle을 설치하기 위해서는 터미널에 딱 한 줄 입력하면 된다.
brew install gradle
입력하면 호로록 설치 과정을 지나서, "gradle -version"을 입력하면 잘 설치되었는지 알 수 있다.
'잡다한 시리즈 > 개발' 카테고리의 다른 글
TDD를 배우고 경험해보며 쌓아가는 이야기 (0) | 2023.03.20 |
---|---|
[Java] 테스트 코드 생성하고 돌리기 (0) | 2023.02.12 |
[Git] core.autocrlf, IntelliJ Line Separators Warnings (0) | 2023.02.12 |
Apple M1 macOS Oracle Java 17 또는 OpenJDK 설치하기 (10) | 2021.12.14 |