build.gradle

    [Gradle] 프로젝트 수준의 Gradle에서 모듈 수준의 Gradle 제어하기

    Project 수준의 build.gradle에서 모듈 수준의 build.gradle 제어하기 멀티 모듈 프로젝트를 만들다보면, 모든 모듈에 dependencies나 task들이 적용되어야 하는 경우가 있다. 이를 위해 프로젝트 수준의 build.gradle에서 모듈 수준의 build.gradle을 제어해야 할 경우가 생긴다. 이를 위해 Gradle에서는 allprojects, subprojects, project 메서드를 제공하는데 이번 글에서는 이 메서드들을 다루어볼 것이다. allprojects : 프로젝트 수준의 build.gradle 뿐만 아니라 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 제어 subprojects : 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 ..

    [Gradle] build.gradle의 동작원리 한 번에 정리하기

    build.gradle은 무엇인가? build.gradle은 파일 자체가 Project 오브젝트(객체)로, Project 오브젝트는 Project 인터페이스를 구현하는 구현체이다. Project 오브젝트는 Project 단위에서 필요한 작업을 수행하기 위해 모든 메서드와 프로퍼티를 모아놓은 슈퍼 객체이다. public interface Project extends Comparable, ExtensionAware, PluginAware { .. } 우리가 build.gradle에 작성하는 수많은 코드들은 모두 Project 오브젝트의 프로퍼티와 메서드가 되며, Project 오브젝트는 프로젝트 이름부터 변수, 메서드를 모두 포함하는 객체가 된다. Project 오브젝트는 내부에 수많은 메서드(Methods..

    Gradle을 위한 Groovy 문법 한 번에 정리하기 : Data Type, String, Closure, Collection, Method, Class

    Groovy란? Groovy란 JVM위에서 동작하는 동적 타입 프로그래밍 언어이다. Java뿐만 아니라 Python, Ruby 등에 많은 영향을 받은 프로그래밍 언어로 문법이 간결하다. 하지만, 사실상 대부분 Gradle Script를 작성하기 위해 사용되고 있으며, Gradle Kotlin이 등장하고 나서는 Gradle Groovy를 Gradle Kotlin으로 많이 전환하는 추세이다. Java 생태계의 대부분인 Android나 Spring이 Kotlin으로 작성 가능한데, Build Script 작성을 위해 별도의 언어를 배운다는 점이 부담스럽기 때문이다. 또한 Groovy는 별도로 프로젝트를 구성하지 않으면 자동완성이 안된다는 문제가 있어 자동완성이 되는 Kotlin으로 빌드 스크립트를 작성하는 것..

    [Gradle] implementation과 api, compile의 차이는 무엇인가?

    implementation과 api, compile build.gradle에서 사용하는 implementation과 api는 모두 라이브러리를 적용시키는 키워드이다. 오래된 Gradle 버전에는 implementation이 없어서 compile을 사용했고, 새로운 버전(6.x 이후 버전)에서 compile이 deprecated 되면서 compile 대신에 api 키워드가 사용되게 되었다. 이 때문에 오래된 프로젝트들의 build.gradle 파일들을 보면 api와 compile을 implementation 대신 쓰는 것을 볼 수 있다. 즉, api와 compile은 같은 역할을 한다. 하지만 Gradle은 api나 compile를 사용하는 것을 권장하지 않는다. api를 통해 라이브러리를 가져올 경우 라..

    [Gradle] build.gradle의 dependencies 블록 한 번에 정리하기. implementation, testImplementaion의 차이와 라이브러리 구성

    dependencies 블록이란? dependencies 블록은 프로젝트를 구성하기 위해 받아와야 할 라이브러리를 정의해놓는 공간이다. dependencies 블록에는 보통 다음과 같은 문법이 들어간다. dependencies { implementation("androidx.navigation:navigation-compose:2.4.0-rc01") } *위는 build.gradle.kts 기준이다. groovy에서는 보통 접은글과 같이 쓴다. 더보기 groovy에서는 보통 다음과 같이 쓴다. dependencies { implementation "androidx.navigation:navigation-compose:2.4.0-rc01" } 위와 같은 implementation을 정의하면 앱 실행, 패키..