2013-09-03 6 views
6

Sto provando a creare un progetto JAR Gradle che è un sottoprogetto di un altro e vorrebbe che il file JAR di output si trovasse in una directory padre (per essere specifico nella directory "lib" del genitore, o fratello). Come posso configurare Gradle per questo e dove è documentato?Gradle: come posso configurare la posizione del jar nella directory principale del progetto?

+0

Perché vuoi farlo? Ogni progetto ha una propria directory di output di build e non consiglio di deviarne. È confuso e significa che non sarai più in grado di pulire i progetti in modo indipendente. –

+0

Ciao Peter - Capisco il principio della separazione dei build del sottoprogetto, ma in questo caso sto creando un plugin Grails che dipende da un jar che si trova in un sottoprogetto (contenente sorgenti groovy), che è stato creato usando Gradle. Voglio che jar venga emesso nella directory "lib" del plugin. Il plugin stesso non ha una build (dato che è un plugin di Grails), solo il sottoprogetto. –

+0

Speriamo che Gradle sia abbastanza flessibile da fare ciò che voglio fare senza imporre rigide regole sulla struttura del progetto, come Maven;) –

risposta

11

In build.gradle, aggiungono:

libsDirName = '../../lib' 

Le impostazioni di configurazione sono riportati nei documenti ufficiali Gradle per la java plugin.

BTW, sono pienamente d'accordo con l'intento dietro i commenti e le risposte fornite da Peter e Hiery, ma a volte la soluzione più semplice è la migliore.

5

Concordato con il commento Peter digitò. Comunque penso che tu voglia esprimere che il progetto genitore dipende dall'output del sottomodulo. Esprimerlo e assicurarsi che il genitore copi l'output del sottomodulo nella sua directory "lib" ha più senso.

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

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