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'
}
Come avete già la vostra soluzione, si dovrebbe pubblicarlo come una risposta a questa domanda in modo che non è elencato come risposta più. – Herick
Si prega di postare come risposta. –
Sry, ho provato ma c'è un limite di caratteri nei commenti. –