Project 수준의 build.gradle에서 모듈 수준의 build.gradle 제어하기 멀티 모듈 프로젝트를 만들다보면, 모든 모듈에 dependencies나 task들이 적용되어야 하는 경우가 있다. 이를 위해 프로젝트 수준의 build.gradle에서 모듈 수준의 build.gradle을 제어해야 할 경우가 생긴다. 이를 위해 Gradle에서는 allprojects, subprojects, project 메서드를 제공하는데 이번 글에서는 이 메서드들을 다루어볼 것이다. allprojects : 프로젝트 수준의 build.gradle 뿐만 아니라 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 제어 subprojects : 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 ..
CI, CD/Groovy Gradle
build.gradle의 task build.gradle의 task는 Project 객체의 메서드이다. task는 task이름과 람다식을 인자로 받으며, 이 task는 gradle [task 이름]을 통해 수행 가능해진다. build.gradle에 커스텀 task 만들기 build.gradle에는 메서드와 같이 커스텀 task를 만들 수도 있다. 커스텀 task는 다음의 문법으로 만들어진다. task 자체가 메서드이며, task의 인자로 task 이름이 넘어간다. task [task 이름] { [task에서 수행할 람다식] } Groovy는 다양한 방식으로 task를 만들 수 있다. 이는 Groovy의 특수한 문법 때문인데, String에서 ""을 생략하고도 쓸 수 있고 메서드를 수행하기 위해 [메서드명..
build.gradle은 무엇인가? build.gradle은 파일 자체가 Project 오브젝트(객체)로, Project 오브젝트는 Project 인터페이스를 구현하는 구현체이다. Project 오브젝트는 Project 단위에서 필요한 작업을 수행하기 위해 모든 메서드와 프로퍼티를 모아놓은 슈퍼 객체이다. public interface Project extends Comparable, ExtensionAware, PluginAware { .. } 우리가 build.gradle에 작성하는 수많은 코드들은 모두 Project 오브젝트의 프로퍼티와 메서드가 되며, Project 오브젝트는 프로젝트 이름부터 변수, 메서드를 모두 포함하는 객체가 된다. Project 오브젝트는 내부에 수많은 메서드(Methods..
Groovy란? Groovy란 JVM위에서 동작하는 동적 타입 프로그래밍 언어이다. Java뿐만 아니라 Python, Ruby 등에 많은 영향을 받은 프로그래밍 언어로 문법이 간결하다. 하지만, 사실상 대부분 Gradle Script를 작성하기 위해 사용되고 있으며, Gradle Kotlin이 등장하고 나서는 Gradle Groovy를 Gradle Kotlin으로 많이 전환하는 추세이다. Java 생태계의 대부분인 Android나 Spring이 Kotlin으로 작성 가능한데, Build Script 작성을 위해 별도의 언어를 배운다는 점이 부담스럽기 때문이다. 또한 Groovy는 별도로 프로젝트를 구성하지 않으면 자동완성이 안된다는 문제가 있어 자동완성이 되는 Kotlin으로 빌드 스크립트를 작성하는 것..