2014-09-22 2 views
0

우리 프로젝트에서 ZIP 파일을 만들 수있는 Gradle 작업이 있습니다. 그것은 울부 짖는 소리 같아요.Gradle을 사용하여 여러 ZIP 파일을 동적으로 만드는 방법은 무엇입니까?

task createZipFile(type: Zip) { 

    destinationDir new File("$projectDir") 
    archiveName 'ABC.zip' 

    from('bin/libs') { 
     include '**/*.jar'  
    } 
    ... 
} 

build.dependsOn(createZipFile) 

동적으로 이름이 다른 여러 zip 파일을 만들어야합니다. 우리는 그것을 다음과 같이 시도했다.

['A', 'B', 'C', 'D'].each { def targetName -> 
    tasks.add(name: "zipIt$targetName", type: Zip) { 
     destinationDir = file("${targetName}.zip") 
     from('bin/libs') { 
     include '**/*.jar'  
    } 
    } 
} 

task zipAll(dependsOn: tasks.matching { Task task -> task.name.startsWith("zipIt")}) 

build.dependsOn(zipAll) 

다음과 같은 오류가 발생합니다.

[{이름 = zipItA, 유형 = 클래스 org.gradle.api.tasks.bundling.Zip}, build_1bct5119tk0khpl3p142j9qck5 $ _run_closure6_closure18 47b8c9d

@ 인수 방법 추가()을 (를) 찾을 수 없습니다 Gradle을 사용하여이 문제를 어떻게 해결할 수 있습니까?

+0

이 솔루션을 살펴 보는 것이 좋습니다. [copy-to-multiple-destinations-with-gradle-copy-task] (http://stackoverflow.com/a/13494584/108350) 귀하의 질문에 대한. _trick_는 작업에 매개 변수를 넣는 것으로 보인다. 나는 당신의 [A, B, C]리스트를 변수에 넣고 그것을 작업 본문 내에서 사용했습니다. 나는 당신이 아직도 그것을 원한다면 당신이 접근 방식을 작동하게 할 수 있다고 생각합니다. – will

답변

2

해당 서명이있는 add 메서드가 없지만 tasks.create("zipIt$targetName", type: Zip) { ... }을 사용할 수 있습니다. API에 대한 자세한 내용은 Gradle Build Language Reference을 확인하십시오.이 정보는 Javadoc/Groovydoc에 추가로 연결됩니다.

관련 문제