2014-10-25 2 views
-2

나는 gradle 분포를 이해하려고합니다. 내가이하는 정확한 이해하는 방법 dist()을 찾기 위해 노력했다어디에 dist() 메소드가 있습니까?

task dist(type: Zip) { 
    dependsOn spiJar 
    from 'src/dist' 
    into('libs') { 
     from spiJar.archivePath 
     from configurations.runtime 
    } 
} 

다음 gradle documentation, 섹션 7.3.4에서 다음 코드 예제가있다. 나는 org.gradle.api.tasks.bundling.Zip에서 검색했지만 그런 방법은 없습니다. 그럼 어디서 선언 했나요?

답변

3

예를 들어 언급 한 링크를 제공해주십시오.

dist() 메서드가 정의되어 있지 않은 것 같습니다. 제공 한 코드 샘플은 단지 작업 정의이므로이 경우에는 distZip 유형의 정의 된 작업의 이름 일뿐입니다. frominto 방법은 AbstractCopyTask에서 가져온 것입니다.

편집

dist() 위에서 언급 한 바와 같이 인스턴스 예제 코드의 다음 작품을 위해 동안 그래서, 그냥 평범한 작업 정의는 다음과 같습니다

artifacts { 
    archives dist 
} 

전용 방법이 AbstractProject에 정의되어있다 클래스 : 이제

public void artifacts(Closure configureClosure) { 
    ConfigureUtil.configure(configureClosure, getArtifacts()); 
} 

, 왜이 오류 :

Could not find method dist() for arguments [{type=class org.gradle.api.tasks.bundling.Zip}, txt, [email protected]] on proj ect ':MP'. 

이 입력 발생

task dist(type: Zip, 'txt') 

? 스크립트 (역동적이고 매우 복잡한 과정 인) 위의 선언을 구문 분석하는 동안

DIST가 전달되어야 유형 Stringtype: Zip, 'txt'의 작업 이름은 TaskContainer 인스턴스에 create 방법 중 하나의 호출로 전환해야 인수로. 당신은 TaskContainer의 문서에서 볼 수 있듯이 String 취하는 create 방법이 없다 - 후 (DIST 작업 이름), Map (유형 : 우편 번호 - 작업 설정), 다시 문자열 ( TXT - 중복/무효 논의). 그것이 실패하는 이유입니다.

task someTask { 
    throw new RuntimeException() 
} 

및 스택 트레이스를 조사 : 당신은 어떻게 작동하는지 관심이 있다면

, 그것은 build.gradle에 다음 코드 조각을 넣어하는 것이 좋습니다. 단계별로 어떻게 작동하는지 알려줄 것입니다.

+0

물론 참조를 추가했습니다. 'task dist (type : Zip,'txt ')'에 'task dist (type : Zip)'을 대치 할 때 왜 에러가 나옵니까 _ _ 인수에 대한 메소드 dist()를 찾을 수 없습니다 [{type = class org.gradle.api.tasks.bundling.Zip}, txt, build_275gv6pdo8dsig251h253koq9t $ _run_closure2 @ a81512] on proj ect ': MP'._ 'dist()'라는 메서드가 있어야합니다. 그 순간을 분명히 할 수 있습니까? –

+0

답변이 업데이트되었습니다. – Opal

2

dist 방법이 없습니다. 이 예에서는 gradle dsl을 사용하여 유형이 "Zip"인 "dist"라는 새 작업을 만듭니다.

"누락 된 방법"을 사용하여 수행됩니다. 자세한 내용은 http://groovy.codehaus.org/Using+methodMissing+and+propertyMissing을 참조하십시오.

참고 : "dist"를 "foo"로 변경하면 이는 여전히 유효한 예이지만 자명하지 않은 작업 이름이됩니다.

관련 문제