2014-07-17 5 views
1

일부 SVNKit 항목을 svn export에 호출하는 build.gradle 파일이있어 여러 개의 프로젝트를 구성하는 일부 디렉토리가 있습니다. 거기에 따라 다른 GradleBuild 작업에Gradle에서 프로젝트를 강제로 재구성하려면 어떻게합니까?

task checkoutIntoDir() << { 
    mkdir 'dirForSvnProjects_2014_07_17_19_50' // timestamp not hard-coded ;) 
    // prompt for username/password 
    // run svn export which places projects in dirForSvnProjects_2014_07_17_19_50 
} 

:

는 나는 다음과 같은 형태이 일에 전념 작업이

task buildCheckedOutStuff(type: GradleBuild, dependsOn: checkoutIntoDir) { 
    dir = "dirForSvnProjects_2014_07_17_19_50/svnProjectIExported" 
    tasks = ['buildMyProj'] 
} 

을하지만이 오면 그것은 task 'buildMyProj' not found in root project을 말한다. 이제 작업 종속성 checkoutIntoDir을 가져 와서 빌드를 시작하기 전에 거기에있는 디렉터리에서 실행하면 문제가 없습니다. 프로젝트에서 새로운 gradle 프로젝트를 알리기 위해 "재구성"을해야 할 것 같네요. dirForSvnProjects_2014_07_17_19_50?

+0

문제가 발생하는 방법을 잘 모르지만 실행 시간이 아닌 구성 시간에 checkoutIntoDir이 실행되고 있는지 확인하십시오. –

+0

checkoutIntoDir 작업이 작동하고 있습니까? 의존성을 제거한 다음'gradle checkoutIntoDir buildCheckedOutEquip '을 실행하면 어떻게됩니까? –

+0

나는 내 책상으로 돌아올 때 그것을 시도 할 것이다, 고마워. – Andy

답변

0

나는 그것을 마침내 발견했습니다.

실제로 변수를 설정하는 방식과 관련이 있으며, Gradle과 관련이 없습니다.

스크립트의 "루트"수준에서 정의되었지만 설정되지 않은 변수를 설정하는 정의 된 작업은 createDir입니다. 그것은 같은 것을 보았다 :

def myBuildDir 

task createDir << { 
    def nowDate = String.format('%tY_%<tm_%<td_%<tH_%<tM',Calendar.instance) 
    myBuildDir= "_build_$nowDate" 
    mkdir myBuildDir 
} 

task checkoutIntoDir(dependsOn: createDir) << { 
    // prompt for username/password 
    // run svn export which places projects in myBuildDir 
} 

을 그리고 Perryn 파울러는 의견에서 지적 createDir이 실행되고있을 때하는 doLast (또는 << 속기) 타입 블록에없는 임의의 블록 구성 시간에 실행됩니다 런타임에. 따라서 변수는 buildCheckedOutStuff 작업에 대해 설정되지 않았습니다.

그래서 난 그냥뿐만 아니라 루트에있는 날짜를 설정을 변경하고 일했다 :

def nowDate = String.format('%tY_%<tm_%<td_%<tH_%<tM',Calendar.instance) 
def eqipBuildDir = "_build_$nowDate" 

task createDir << { 
    mkdir eqipBuildDir 
} 

내가 간결 조각을 떠나 무엇을 얻을 그!

관련 문제