2014-07-21 2 views
7

와 하나의 폴더에 생성 된 모든 및 타사 항아리 우리는 각각의 하위 프로젝트에 대한 하나 개의 자바 항아리와 멀티 프로젝트 Gradle을 설정을 가지고 우리는 모든 프로젝트 병과 모든 타사 라이브러리 (종속성)에 서명해야합니다.복사 Gradle을

내 접근 방식은 이제 모든 빌드 된 하위 프로젝트 병 및 모든 타사 라이브러리를 별도의 폴더로 복사하고 서명을위한 작업을 실행했습니다. 그러나 항아리를 복사 할 수 없습니다.

task signAll(dependsOn: [copyFiles]) << { 
    new File('webstart/signed').mkdirs() 
    def libFiles = files { file('webstart/lib').listFiles() } 
    ... 
} 

가 그럼 난 Gradle을 signAll을 실행하려고 : 함께

task copyFiles(type: Copy, dependsOn: subprojects.jar) { 
    from configurations.runtime 
    from("build/libs") 
    into("webstart/lib") 
    include('*.jar') 
} 

:

내 루트 build.gradle에 접근했다. 그러나 webstart/lib 폴더에서 루트 프로젝트의 이름을 가진 빈 항아리 만 찾을 수 있습니다.

아마 내 접근 방식이 완전히 잘못되었습니다. 내가 만든 모든 & 타사 항아리를 하나의 폴더에 복사하려면 어떻게해야합니까?

답변

10

루트 build.gradle에이 코드 조각을 추가하고 그것을 잘 작동합니다 :

allprojects { 
    apply plugin: 'java' 
    repositories { 
     mavenCentral() 
    } 
} 

task copyJars(type: Copy, dependsOn: subprojects.jar) { 
    from(subprojects.jar) 
    into project.file('dest') 
} 

task copyDeps(type: Copy) { 
    from(subprojects.configurations.runtime) 
    into project.file('dest/lib') 
} 

task copyFiles(dependsOn: [copyJars, copyDeps]) 
+3

안녕, 대답을 주셔서 감사합니다, 이것은 좋은 작품! 한가지 : 이제 공유되는 모든 프로젝트의 jar 파일은 dest와 dest/lib에 모두 복사됩니다. 예 : sub-project-a requries sub-project-b이면 sub-project-b.jar이 dest와 dest/lib에 모두 복사됩니다. 공유 프로젝트가 dest/lib에도 복사되지 않도록하는 방법은 무엇입니까? – Dominic