2014-12-18 12 views
8

Mam projekt podzielony na dwa podprojekty.Jak wygenerować plik wojny na podstawie dwóch podprojektów?

/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') 

moje pytanie jest jaki sposób można utworzyć plik wojny z podprojektów i zewnętrznych lib zależności? Następujący fragment kodu to mój bieżący 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' 
} 

Jeden szczegół jest ważny. Program nasłuchujący kontekstu języka Java (w głębi kodu projektu) działa z skompilowanym zapleczem jako plik JAR z folderu WEB-INF/lib. Oznacza to, że wszystkie pliki klas nie mogą być łatwo użyte z folderu WEB-INF/classes.

Jak widać grałem z dependencies i niestandardowym zadaniem copy. Nie jestem pewien, co jest właściwe, w pewnym stopniu. Jak mam to zrobić?

ROZWIĄZANIE

Zdefiniuj z war.from Methode, gdzie można uzyskać dostęp do źródeł statycznych.

gradle docu z (sourcePaths) - Określa pliki źródłowe lub katalogi dla kopii. Podane ścieżki są oceniane według pliku Project.files().

My zmienił 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

Jak masz już swoje własne rozwiązanie, należy opublikować go jako odpowiedź na to pytanie tak, że nie znajduje się na liście już bez odpowiedzi. – Herick

+0

Proszę zaksięgować jako odpowiedź. –

+0

Sry, próbowałem, ale w komentarzach jest limit znaków. –

Odpowiedz

4

Solution (na czysto) zamykając to pytanie haniebnie zaczerpnięty z inicjatora Pytanie za ;-)

Define zależności podprojektów z "war.from" metody , gdzie otrzymujesz swoje statyczne źródła.

gradle documentation fragment: od (sourcePaths) - Określa pliki źródłowe lub katalogów o kopię. Podane ścieżki są oceniane według pliku Project.files().

Ronny się zmieniło 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' 
} 
Powiązane problemy