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'
}
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
Proszę zaksięgować jako odpowiedź. –
Sry, próbowałem, ale w komentarzach jest limit znaków. –