문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
gradle:customtask [2012/10/06 17:33] kwon37xi [간단한 사용자 정의 태스크 클래스 만들기] |
gradle:customtask [2012/10/06 17:48] kwon37xi [독립 프로젝트] |
||
---|---|---|---|
줄 25: | 줄 25: | ||
===== 간단한 사용자 정의 태스크 클래스 만들기 ===== | ===== 간단한 사용자 정의 태스크 클래스 만들기 ===== | ||
- | [[http:// | + | [[http:// |
태스크에 어떤 행위를 추가하려면 [[http:// | 태스크에 어떤 행위를 추가하려면 [[http:// | ||
줄 52: | 줄 52: | ||
hello from GreetingTask | hello from GreetingTask | ||
</ | </ | ||
+ | |||
+ | 태스크에 프라퍼티를 추가하여 커스터마이징을 할 수 있게 하자. 태스크는 POGO이므로 태스크 객체에 프라퍼티를 지정하거나 메소드를 호출 할 수 있다. | ||
+ | |||
+ | * 프라퍼티 추가된 태스크 '' | ||
+ | // 기본값사용 | ||
+ | task hello(type: GreetingTask) | ||
+ | |||
+ | // greeting 변경 | ||
+ | task greeting(type: | ||
+ | greeting = ' | ||
+ | } | ||
+ | |||
+ | class GreetingTask extends DefaultTask { | ||
+ | def String greeting = 'hello from Greeting Task' | ||
+ | @TaskAction | ||
+ | def greet() { | ||
+ | println greeting | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | * 실행하면 < | ||
+ | > gradle -q hello greeting | ||
+ | hello from GreetingTask | ||
+ | greetings from GreetingTask | ||
+ | </ | ||
+ | |||
+ | ===== 독립 프로젝트 ===== | ||
+ | 이제 태스크를 독립 프로젝트로 분리하여 배포하고 공유할 수 있도록 해보자. 이는 간단한 Groovy 프로젝트로 태스크 클래스를 포함하는 JAR를 생성하기만 하면 된다. Groovy 프로젝트로 만들고 Gradle API를 컴파일시 의존성에 추가한다. | ||
+ | |||
+ | * '' | ||
+ | apply plugin: ' | ||
+ | |||
+ | dependencies { | ||
+ | compile gradleApi() | ||
+ | groovy localGroovy() | ||
+ | } | ||
+ | </ | ||
+ | * '' | ||
+ | package org.gradle | ||
+ | |||
+ | // build.gradle에서는 자동으로 추가되지만 여기서는 명시적으로 import 해야한다. | ||
+ | import org.gradle.api.DefaultTask | ||
+ | import org.gradle.api.tasks.TaskAction | ||
+ | |||
+ | class GreetingTask extends DefaultTask { | ||
+ | String greeting = 'hello from GreetingTask' | ||
+ | |||
+ | @TaskAction | ||
+ | def greet() { | ||
+ | println greeting | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 다른 프로젝트에서 태스크 클래스 사용하기 ==== | ||
+ | 태스크 클래스를 빌드 스크립트의 클래스패스에 추가해야 한다. '' | ||
+ | |||
+ | * 다른 프로젝트에서 사용자 정의 태스크 사용하기< | ||
+ | buildscript { | ||
+ | // 빌드 스크립트 리포지토리에 추가하고 | ||
+ | repositories { | ||
+ | maven { | ||
+ | url uri(' | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | // classpath 구성에 의존성을 추가한다. | ||
+ | dependencies { | ||
+ | classpath group: ' | ||
+ | } | ||
+ | } | ||
+ | |||
+ | task greeting(type: | ||
+ | greeting = ' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 태스크 클래스의 단위 테스트 작성하기 ==== | ||
+ |