2013-09-03 3 views
6

다른 프로젝트의 하위 프로젝트 인 Gradle JAR 프로젝트를 빌드하려고합니다. 출력 JAR 파일이 상위 디렉토리 (상위 디렉토리 또는 형제 디렉토리의 lib 디렉토리에 있음)에 있어야합니다. 어떻게 이것을 위해 Gradle을 구성하고 문서화 된 곳이 있습니까?Gradle : jar 위치가 프로젝트의 상위 디렉토리에 있도록 구성하려면 어떻게해야합니까?

+0

왜 하시겠습니까? 각 프로젝트에는 자체 빌드 출력 디렉토리가 있으며,이를 벗어나는 것을 권장하지 않습니다. 혼란스럽고 더 이상 프로젝트를 독립적으로 정리할 수 없음을 의미합니다. –

+0

안녕하세요 피터 - 하위 프로젝트 빌드를 분리하는 원칙을 이해합니다.하지만이 경우에는 Gradle을 사용하여 빌드 된 하위 프로젝트 (그루비 소스 포함)에 의존하는 Grails 플러그인을 만듭니다. 항아리를 플러그인의 "lib"디렉토리에 출력하고 싶습니다. 플러그인 자체에는 빌드가 없으므로 (Grails 플러그인이므로) 하위 프로젝트 만 있습니다. –

+0

희망 사항으로 Gradle은 Maven과 같이 프로젝트 구조에 대한 엄격한 규칙을 적용하지 않고도 원하는 작업을 수행 할 수있을만큼 충분히 유연합니다.) –

답변

11

build.gradle에서 추가

libsDirName = '../../lib' 

는 config 설정은 java plugin의 공식 Gradle을 워드 프로세서로 표시됩니다.

동의어, 나는 Peter와 Hiery의 의견과 답변 뒤에있는 의도에 완전히 동의하지만 때로는 가장 간단한 해결 방법이 가장 좋습니다.

5

Peter가 입력 한 의견에 동의합니다. 그러나 부모 프로젝트가 하위 모듈의 출력에 의존한다는 것을 표현하고자한다고 생각합니다. 이를 표현하고 부모가 서브 모듈의 출력을 'lib'디렉토리에 복사하도록하는 것이 더 합리적입니다.

task assembleSubModules(type: Copy) { 
    destinationDir = file("lib") 

    into("lib") { 
    project.subprojects.each { p -> 
     from(p.tasks.withType(Jar)*.outputs) 
    } 
    } 
} 
관련 문제