2014-12-18 10 views
8

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ändert
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

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

+0

Bitte als Antwort posten. –

+0

Sry, ich habe versucht, aber es gibt ein Char-Limit bei Kommentaren. –

Antwort

4

SOLUTION (für sauber, diese Frage zu schließen) schmählich aus der Urheber-Frage genommen ;-)

definiert Teilprojekt Abhängigkeiten mit dem "war.from" -Methode , wo Sie Ihre statischen Quellen bekommen.

gradle documentation Auszug: von (sourcePaths) - Gibt an Quelldateien oder Verzeichnisse für eine Kopie. Die angegebenen Pfade werden gemäß Project.files() ausgewertet.

Ronnys build.gradle geändert

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' 
} 
Verwandte Themen