2014-12-18 12 views
8

Ho un progetto che è suddiviso in due sottoprogetti.Come generare un file di guerra basato su due sottoprogetti

/project 
    /sub-project-a (backend with JAVA source which is compiled into JAR file) 
    /sub-project-b (frontend sources which are compiled with grunt via gradle call) 
    build.gradle 
    settings.gradle (contains include 'sub-project-a', 'sub-project-b') 

mia domanda è come posso creare un file Guerra con sotto-progetti e le dipendenze delle librerie esterne? Il seguente codice snipped è il mio attuale build.gradle:

apply plugin: 'war' 
version '1.0.0' 
repositories { 
    mavenCentral() 
} 
dependencies { 
    compile project(':sub-project-a') 
    compile project(':sub-project-b') 
    compile 'com.google.code.gson:gson:2.2.4' 
} 
task copy(type: Copy) { 
    from 'sub-project-a/build', 'sub-project-b/build' 
    into 'build' 
} 
build.dependsOn clean, copy 
war { 
    archiveName 'project.war' 
} 

Un dettaglio è importante. Il listener di contesto java (deep in project code) funziona con il backend compilato come file jar dalla cartella WEB-INF/lib. Ciò significa che tutti i file di classe non possono essere facilmente utilizzati dalla cartella WEB-INF/classes.

Come si può vedere ho giocato con dependencies e un'attività personalizzata copy. Non sono sicuro di cosa sia giusto il modo gradle. Come dovrei farlo?

SOLUZIONE

Definire con war.from methode, dove si ottiene le tue fonti statiche.

gradle docu da (sourcePaths) - Specifica file di origine o directory per una copia. I percorsi indicati sono valutati come da Project.files().

mio cambiato build.gradle

apply plugin: 'war' 
version '1.0.0' 
repositories { 
    mavenCentral() 
} 
dependencies {   
    compile 'com.google.code.gson:gson:2.2.4' 
}  
war { 
    archiveName 'project.war' 
    from 'sub-project-a/build/dist', 'sub-project-b/build/dist' 
} 
+2

Come avete già la vostra soluzione, si dovrebbe pubblicarlo come una risposta a questa domanda in modo che non è elencato come risposta più. – Herick

+0

Si prega di postare come risposta. –

+0

Sry, ho provato ma c'è un limite di caratteri nei commenti. –

risposta

4

SOLUZIONE (per la chiusura in modo pulito a questa domanda) vergognosamente preso dal creatore della domanda ;-)

definire le dipendenze sottoprogetto con il metodo "war.from" , dove ottieni le tue fonti statiche.

gradle documentation estratto: da (sourcePaths) - Specifica file di origine o directory per una copia. I percorsi dati sono valutati in base a Project.files().

Ronny è cambiato build.gradle

apply plugin: 'war' 
version '1.0.0' 
repositories { 
    mavenCentral() 
} 
dependencies {   
    compile 'com.google.code.gson:gson:2.2.4' 
}  
war { 
    archiveName 'project.war' 
    from 'sub-project-a/build/dist', 'sub-project-b/build/dist' 
} 
Problemi correlati