여기서 옵션들은 task의 input으로 들어간다. 비슷한 task들이 있으면 모든 task의 옵션을 설정해줘야 한다.
여기서 complieJava를 따라가보면 이렇게 Java, Kotlin, Groovy 클래스가 있다.
특정 타입의 모든 task를 설정하기 위해 tasks.withType<>()
을 쓸 수 있다.
타입을 지정해줌으로써 Gradle은 이 이름을 가진 task가 다른 task에 연결될 수 있다는 것을 안다.
예시에서는 jar 파일들을 묶어서 zip 압축한다.
만약 우리가 쓰고자 하는 task가 구현 안되어있으면 우리가 하면된다.
task 구현체는 자바 클래스고 DefaultTask라는 Gradle 타입을 상속했다.
gradle에서는 어노테이션을 붙여주면 런타임에 구체 클래스를 만들어준다.
assemble, build, check 같은 것들은 lifecycle tasks다. 타입 구현체가 없고 DefaultTask다.