사용자 도구

사이트 도구


gradle:buildlifecycle

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
gradle:buildlifecycle [2012/10/08 17:55]
kwon37xi [프로젝트 평가]
gradle:buildlifecycle [2014/08/29 14:40]
kwon37xi [프로젝트 평가]
줄 146: 줄 146:
 [[http://www.gradle.org/docs/current/dsl/org.gradle.api.invocation.Gradle.html|Gradle]] 객체에 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/ProjectEvaluationListener.html|ProjectEvaluationListener]] 를 추가해도 된다. [[http://www.gradle.org/docs/current/dsl/org.gradle.api.invocation.Gradle.html|Gradle]] 객체에 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/ProjectEvaluationListener.html|ProjectEvaluationListener]] 를 추가해도 된다.
  
 +  * 최상위 ''build.gradle''에서 특정 하위 프로젝트를 콕 집어서 지정<code groovy>
 +project(':sub-project').afterEvaluate {
 +   // ....
 +}
 +</code>
 ==== 태스크 생성 ==== ==== 태스크 생성 ====
   * 프로젝트에 태스크가 추가된 직후에 알림을 받을 수 있다. 기본값을 설정하거나 태스크가 빌드에 노출되기전에 행위를 추가하고자 할 때 사용한다.   * 프로젝트에 태스크가 추가된 직후에 알림을 받을 수 있다. 기본값을 설정하거나 태스크가 빌드에 노출되기전에 행위를 추가하고자 할 때 사용한다.
줄 165: 줄 170:
  
 ==== 태스크 실행 그래프가 정해진 뒤에 ==== ==== 태스크 실행 그래프가 정해진 뒤에 ====
 +  * 실행할 태스크에 ''release''가 있는지 여부에 따라 버전 변경하는 ''build.gradle'' <code groovy>
 +task distribution << {
 +    println "We build the zip with version=$version"
 +}
 +
 +task release(dependsOn: 'distribution') << {
 +    println 'We release now'
 +}
 +
 +gradle.taskGraph.whenReady {taskGraph ->
 +    if (taskGraph.hasTask(release)) {
 +        version = '1.0'
 +    } else {
 +        version = '1.0-SNAPSHOT'
 +    }
 +}
 +</code> 
 +
 +''release'' 태스크의 실행여부에 따라 버전값이 달라진다. [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/execution/TaskExecutionGraph.html|TaskExecutionGraph]]에 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/execution/TaskExecutionGraphListener.html|TaskExecutionGraphListener]]를 추가해도 된다.
 +
 +==== 태스크 실행 ====
 +어떤 태스크이든 실행 직전과 직후에 알림을 받을 수 있다.
 +
 +  * 태스크 실행과 종료를 로그로 남기는 ''build.gradle'' <code groovy>
 +task ok
 +
 +task broken(dependsOn: ok) << {
 +    throw new RuntimeException('broken')
 +}
 +
 +gradle.taskGraph.beforeTask { Task task ->
 +    println "executing $task ..."
 +}
 +
 +gradle.taskGraph.afterTask { Task task, TaskState state ->
 +    if (state.failure) {
 +        println "FAILED"
 +    }
 +    else {
 +        println "done"
 +    }
 +}
 +</code>
 +  * 실행하면 <code>
 +> gradle -q broken
 +executing task ':ok' ...
 +done
 +executing task ':broken' ...
 +FAILED
 +</code>
  
 +[[http://www.gradle.org/docs/current/javadoc/org/gradle/api/execution/TaskExecutionGraph.html|TaskExecutionGraph]]에 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/execution/TaskExecutionListener.html|TaskExecutionListener]]를 추가해도 된다.
  
gradle/buildlifecycle.txt · 마지막으로 수정됨: 2014/08/29 14:40 저자 kwon37xi