본문 바로가기

공부 기록/영상 후기

[10분 테코톡] 루나의 Gradle

https://youtu.be/ntOH2bWLWQs

Gradle : Groovy를 기반으로 한 오픈소스 빌드 도구. 거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템

  

Groovy : JVM 상에서 실행되는 스크립트 언어. JAVA와 유사한 문법 구조를 가지며, 호환성이 아주 좋다.

빌드 : 소스 코드를 컴파일, 테스트, 정적 분석 등을 실행하여 실행 가능한 애플리케이션으로 만들어주는 과정

  

다양한 라이브러리의 등장으로 인한 문제점 : 라이브러리를 다운로드 및 추가하는 번거로움, 개발자들 간의 버전 관리 어려움, 다운받은 jar 파일의 보안 위험

빌드 도구 : 계속해서 늘어나는 라이브러리를 자동 추가 및 관리, 프로젝트를 진행하며 라이브러리의 버전을 쉽게 동기화. 위의 문제점을 해결!

Gradle의 장점

  • 프로젝트를 설정 주입(Configuration Injection) 방식으로 정의
    • Maven의 상속 구조보다 재사용에 용이하며, 프로젝트의 조건을 체크할 수 있어서 프로젝트 별로 주입되는 설정을 다르게 할 수 있다.
  • 멀티 프로젝트 빌드
    • 하나의 리포지터리 내에 여러 개의 하위 프로젝트를 구성할 수 있다.
  • 빌드 속도가 빠름
    • 점진적 빌드(마지막 빌드 호출 이후, task의 변경 여부를 확인하여 변경되지 않았다면 빌드 실행 X)
    • 빌드 캐시(빌드 결과물을 캐싱해두었다가 하나의 빌드에서 사용되는 파일들이 다른 빌드들에 사용된다면 재사용)
    • 데몬 프로세스(서비스의 요청에 응답하기 위해 오랫동안 살아있는 프로세스, 메모리 상에 빌드 결과물을 보관)

api : 내부 의존성을 컴파일과 런타임 모두에 보이는 API 의존성

implementation : 내부 의존성을 런타임에서만 보이는 구현 의존성

  

compileOnly : 컴파일에서만 사용되는 의존성 정의

runtimeOnly : 런타임에만 사용되는 의존성 정의

  

test + Implementation, CompileOnly, RuntimeOnly : 해당 의존성을 테스트 시에만 사용하도록 정의