Ich habe ein Projekt, das in zwei Teilprojekte aufgeteilt ist.Wie man eine War-Datei basierend auf zwei Teilprojekten generiert
/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')
Meine Frage ist wie kann ich ein Krieg mit Teilprojekten und externen lib Abhängigkeiten Datei erstellen? Der folgende abgeschnittene Code ist mein aktueller 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'
}
Ein Detail ist wichtig. Der Java-Context-Listener (tief im Projektcode) arbeitet mit dem kompilierten Backend als JAR-Datei aus dem Ordner WEB-INF/lib
. Dies bedeutet, dass alle Klassendateien nicht einfach von WEB-INF/classes
Ordner verwendet werden können.
Wie Sie sehen können, spielte ich mit dependencies
und eine benutzerdefinierte copy
Aufgabe. Ich bin mir nicht sicher, was richtig ist. Wie soll ich das machen?
SOLUTION
mit war.from
Methode definieren, wo Sie Ihre statischen Quellen.
gradle docu aus (sourcePaths) - Gibt Quelldateien oder Verzeichnisse für eine Kopie. Die angegebenen Pfade sind , wie in Project.files() ausgewertet.
Mein build.gradle
geändertapply 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'
}
Wie Sie bereits Ihre eigene Lösung haben, sollten Sie es schreiben als eine Antwort auf diese Frage, so dass sie nicht als unbeantwortet aufgeführt ist mehr. – Herick
Bitte als Antwort posten. –
Sry, ich habe versucht, aber es gibt ein Char-Limit bei Kommentaren. –