[Android] buildSrc를 이용한 Dependency 관리

Enso·2023년 5월 12일

Android

목록 보기
1/5

프로젝트를 진행 하면서 여러 라이브러리를 gradle 파일에 implementation 한 적이 있었다. 만약 app 디렉토리 하나만으로 앱이 작동 된다면 라이브러리 버전이 추후 업데이트 되었을 때 버전만 필요에 맞게끔 수정하면 되었는데

만약 여러 개발자와 협업을 하거나, 기능의 고도화를 위하여 레이어별 모듈로 나눈다고 했을 때
UseCase만 나눈다고 해도.. Repository는 필수로 모듈화를 해야한다.

각 모듈에는 build.gradle이 생성된다 여기에서 Dependency 되는 라이브러리 버전을 어떻게 관리할까?
Android Studio에서 프로젝트를 생성하면 우리에게 익숙한 build.gradle로 당연히 관리하겠지...
하지만 Gradle 공식 문서에서는 여러 모듈의 Dependency를 효율적으로 관리 할 수 있는 방법이 존재한다.

Gralde 공식 문서 에서는 아래와 같이 설명이 나와있다.

The directory buildSrc is treated as an included build. Upon discovery of the directory, Gradle automatically compiles and tests this code and puts it in the classpath of your build script. For multi-project builds there can be only one buildSrc directory, which has to sit in the root project directory. buildSrc should be preferred over script plugins as it is easier to maintain, refactor and test the code.

Gradle이 수행될때 buildSrc 디렉토리가 존재하는지 체크한다.
만약 존재 한다면 Gradle은 이 코드를 자동으로 컴파일하고 테스트 한 뒤 빌드 스크립트의 클래스 경로에 넣는다고 한다.
이 방법을 사용한다면 다중 프로젝트 모듈로 나눌 때 유지 보수, 리팩토링 및 코드 테스트를 쉽게 관리할 수 있다고 한다.

간단하게 설명해서 buildSrc를 사용한다면 build.gradle -> build.gradle.kts 로 사용하게 된다. 즉 코틀린을 이용해서 gradle을 관리할 수 있다는 것!
Gradle이 수행할 때 우린 명령할 .kt 파일을 만들어서 각 Dependency의 버전을 Data 형식?으로 만들고 각 모듈의 build.gradle.kts에서 해당 Data를 사용하기만 하면 된다.
그러면 추후 버전을 수정 할 때 하나의 파일에서만 버전을 변경 해주면 모든 모듈은 버전 관리가 아주 쉽게 된다.

안드로이드 개발자 라면 꼭 한번 시도 해보는것이 좋은 것 같다.
필자는 적용 하는 과정에서 Gradle에 대해서 다시 한번 배우고, 어떻게 돌아가는지 이해하게 되어 좋은 경험이었다고 생각한다.

우선 시작하기 앞서 buildSrc를 가장 잘 사용한 레퍼런스를 확인 하고 가자
드로이드나이츠 2021 App GitHub
드로이드나이츠는 협업에 계신 안드로이드 개발자 선배님들께서 경험을 바탕으로 지식을 공유하는 컨퍼런스이다. 내가 생각하기에 가장 현업에서 많이 사용되는 패키징과 코드 스타일과 같은 귀한 것을 공유 해주셨으니 바이블 같은 존재이다.

[buildSrc 시작 하기]

  1. root 폴더에 buildSrc를 생성한다.

  2. buildSrc 폴도 내에 build.gradle.kts 파일을 생성한 뒤 아래와 같이 코드를 작성한다.

  plugins {
      `kotlin-dsl`
  }

  repositories {
      gradlePluginPortal()
  }
이후 Gradle sync를 하여 plugin을 활성화 한다. 
  1. src/main/java를 생성한다.

  2. java 폴더 내 Kotlin 파일을 생성 한다 (원하는 이름 가능)

  3. 생성한 Kotlin 내 dependency를 지정한다.
    (아래 이미지는 드로이드나이츠를 예를 들어 표시 한 것이다)

  1. 이후 사용한 앱 build.gradle에서는 아래와 같이 사용이 가능하다.

위 사진과 같이 각 모듈에 implementation를 buildSrc에서 통합하여 관리가 가능하다. 앞으로 프로젝트를 시작할 때 buildSrc를 더욱 활용 해보자!

profile
문제를 먼저 파악하고 대처할 수 있는 개발을 지향합니다.

0개의 댓글