2013-09-03 16 views
6

Próbuję zbudować projekt JAR Gradle, który jest podprojektem innego i chciałby, aby wyjściowy plik JAR znajdował się w katalogu nadrzędnym (aby był specyficzny w katalogu "lib" rodzica lub rodzeństwa). Jak skonfigurować Gradle do tego i gdzie jest to udokumentowane?Gradle: jak skonfigurować lokalizację słoika w katalogu nadrzędnym projektu?

+0

Dlaczego chcesz to zrobić? Każdy projekt ma własny katalog wyjściowy kompilacji i nie polecam od niego odbiegać. Jest to mylące i oznacza, że ​​nie będziesz już w stanie samodzielnie czyścić projektów. –

+0

Witaj Peter - Rozumiem zasadę segregowania podprojektów, ale w tym przypadku tworzę wtyczkę Grails, która zależy od słoika znajdującego się w podprojekcie (zawierającym groovy źródła), który jest zbudowany przy użyciu Gradle. Chcę, aby jar był wyprowadzany do katalogu "lib" wtyczki. Wtyczka sama w sobie nie ma kompilacji (ponieważ jest to wtyczka Grails), tylko podprojekt. –

+0

Mam nadzieję, że Gradle jest wystarczająco elastyczny, aby robić to, co chcę, bez narzucania ścisłych zasad dotyczących struktury projektu, takich jak Maven;) –

Odpowiedz

11

W build.gradle dodać:

libsDirName = '../../lib' 

Ustawienia konfiguracyjne są przedstawione w oficjalnych docs Gradle dla java plugin.

BTW, w pełni zgadzam się z intencją kryjącą się za komentarzami i odpowiedziami udzielonymi przez Petera i Hiery'ego, ale czasami najprostsze rozwiązanie jest najlepsze.

5

Uzgodniono z komentarzem, który napisał Peter. Jednak myślę, że chcesz wyrazić, że projekt nadrzędny zależy od danych wyjściowych modułu. Wyrażanie tego i zapewnienie, że rodzic skopiuje dane wyjściowe modułu częściowego do katalogu "lib" ma więcej sensu.

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

    into("lib") { 
    project.subprojects.each { p -> 
     from(p.tasks.withType(Jar)*.outputs) 
    } 
    } 
} 
Powiązane problemy