해당 주제는 삼치 스터디(최애 스터디) 에서 다뤘습니다.
Gradle은 CI/CD를 위한 아래 Task들을 자동화 시켜주는 Build Tool 입니다 .
Android의 공식 Tool로 지정되었으며, groovy가 아닌 Kotlin DSL으로도 바꿔 사용할 수 있습니다.
보통 Gradle과 Maven을 많이 비교합니다.
Gradle은 Maven과 Ant의 장점을 모아 만들어서 Maven보다 최대 100배정도의 빠른 속도를 갖고 있습니다.
또한 Maven보다 직관적인 문법 을 갖고있습니다.
maven
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.4.RELEASE</version>
</dependency>
gradle
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
왜 이렇게 차이가 나는지, Gradle에는 어떤 기능이 있는지 좀더 Deep 하게 들어가 봅시다!
빌드된 파일에서, 재빌드가 아닌, 바뀐 파일만 빌드하는것을 의미합니다.
10개중, 5개 파일이 바뀌었을경우, 5개만 리컴파일을 실행합니다.
Gradle은 빌드 캐시를 사용하여 동일한 Android 플러그인이 생성하는 특정 출력(예: 패키지 해제된 AAR 및 사전 덱싱 원격 종속 항목)을 재사용합니다.
이를 통해 빠른 빌드가 가능합니다.
Daemon Processs는 서비스의 요청에 응답하기 위해 오랫동안 살아있는 프로세스를 말합니다.
Daemon Processs는 메모리상에 빌드 결과물을 보관하는데요.
첫 빌드에선 오랜시간이 걸려도, 다음 빌드에서 매우 적은 시간만 소요됩니다.
Gradle은 다양한 Scope를 제공합니다.
외, complieOnly
, runtimeOnly
등이 있습니다.
해당 Scope를 사용하면서, 상황에 맞게 모듈을 가져올 수 있습니다.
왜 한번 빌드 후, 속도가 빨랐는지 알게된것 같습니다.