2012-09-05 4 views
2

그래서, 나는 gradle에서 기본 Groovy 스크립트를 사용하는 방법은 무엇입니까?

task deleteJars(type: Delete) { 
    ext.collection = files { genLibDir.listFiles() } 
    delete ext.collection 
} 

task copyJars(type: Copy) { 
    from(configurations.compile) {} 
    from(fixedLibDir) {} 
    into genLibDir 
} 

copyJars.dependsOn('deleteJars') 

내가 몇 가지 질문

  1. 하나 개의 함수 Gradle을 방법으로 그것을 쓰는 깨끗한 방법이 있나요이 지금 원하는대로 작동하는 것 같군 다음이?
  2. 이전에 나는 아래 내용을 가지고 있었지만 copyJars 작업이 실행될 때 대신 복사 기능이 항상 실행되는 것으로 보입니까?
  3. 작업에 의존 할 때 간단한 Groovy (예 : 파일 삭제, 파일 복사 등)를 쓰려면 올바르게 실행됩니까?

작업이에 의존 할 때 끝내 실행을 갖는 내 끔찍한 시도 (나는 포착하고 모든 단일 실행을 실행 어떤 대상하지만 불행히도 상관없이 실행 없음) ...

task('copyJars') { 
    ext.collection = files { genLibDir.listFiles() } 
    delete ext.collection 
    copy { from configurations.compile into genLibDir } 
    copy { from fixedLibDir into genLibDir } 
} 

그래서 내 주요 질문은 작업에 Groovy 스크립트를 작성하면 작업이 실행될 때만 실행됩니다. (생각만큼 위는 그루비 스크립트는했지만 매번 실행하는 것), 딘

답변

2

Gradle을 세 단계로 진행을 구축

감사 : 초기화, 구성 및 실행. 빌드 스크립트의 대부분의 코드는 구성 단계에서 평가됩니다. 구성 단계는 결국 어떤 작업이 실행되는지 독립적입니다. (실행해야 할 작업 결정은 구성 작업이 끝날 때만 수행됩니다. 모든 작업과 해당 작업의 종속성을 알면 작업을 실행할 때와 실행될 때 실행되는 코드를 추가하려면 실행 단계에서 doFirst 또는 doLast을 사용하여 이라는 작업 작업을 작업에 추가하십시오. 예 :

task copyJars { 
    doLast { /* put any Groovy code here */ } 
} 

Gradle User Guide에서 이러한 개념에 대해 자세히 알아볼 수 있습니다.

0

좋아, 그래서를 사용하여,이했던 작업 (하지만 작업의 유형을 꺼내했다거나 실행되지 않을 것이다)

task copyJars() { 
    doLast { 
     ext.collection = files { genLibDir.listFiles() } 
     delete ext.collection 
     copy { from configurations.compile into genLibDir } 
     copy { from fixedLibDir into genLibDir } 
    } 
} 
관련 문제