2013-06-03 2 views
1

아이비 리포지토리에 아티팩트를 게시하고 싶지만 작동하지 않습니다. 나는 this article를 읽고 읽기 후이 샘플 빌드 생성 : 물론Gradle - 아티팩트 게시

task ivyPublishTest << { 
    def buildDir = new File("build") 
    buildDir.mkdirs() 
    def fileToPublish = new File("build/file.abc") 
    fileToPublish.write("asdasdasd") 
} 

artifacts { 
    archives(ivyPublishTest.fileToPublish) { 
     name 'gradle-test-artifact' 
     builtBy ivyPublishTest 
    } 
} 

uploadArchives { 
    repositories { 
     ivy { 
      url "http://my.ivy.repo/ivyrep/shared" 
     } 
    } 
} 

문제가 작동하지 않습니다이다. 이 오류가 발생합니다 Could not find property 'fileToPublish' on task ':ivyPublishTest'

답변

1

Groovy에서 def은 어휘 적으로 범위가 지정된 로컬 변수를 만듭니다. 따라서 fileToPublish은 작업 작업 외부에 표시되지 않습니다. 또한 구성은 구성 단계에서 이루어져야합니다 (즉, 작업 작업에서 fileToPublish의 선언 및 할당이 너무 늦게 올 것임).

task ivyPublishTest { 
    // configuration (always evaluated) 
    def buildDir = new File("build") 
    ext.fileToPublish = new File("build/file.abc") 
    doLast { 
     // execution (only evaluated if and when the task executes) 
     buildDir.mkdirs() 
     fileToPublish.write("asdasdasd") 
    } 
} 

artifacts { 
    // configuration (always evaluated) 
    archives(ivyPublishTest.fileToPublish) { 
     name 'gradle-test-artifact' 
     builtBy ivyPublishTest 
    } 
} 

ext.fileToPublish = ...추가 특성, (이 경우 작업) 눈에 보이는 모든 곳에서 객체의 기존 객체에 부착 된 새 속성을 선언 볼 수 있습니다 : 여기에 올바른 솔루션입니다. Gradle User Guide에 추가 속성 here에 대한 자세한 내용을 볼 수 있습니다.

+0

감사합니다.하지만 gradle이 다음과 같은 오류 메시지를 표시합니다. 인수 [build \ file.abc, build_343353k3f117pa3tdkoiplr9of $ _run_closure2_clos ... '에 대한 메소드 아카이브를 찾을 수 없습니다. – pepuch

+1

선언 한'java'와 같은 플러그인을 적용하지 않았을 수 있습니다. 'archives' 설정입니다. 전체 Gradle 배포판의 샘플 빌드를 확인하십시오. –

+1

이제 알았습니다. 플러그인없이 이슈를 게시 할 수 있습니까? – pepuch

관련 문제