2

Wir versuchen, unsere vorhandenen Spring MVC-Anwendungen zu Spring Boot-Anwendung zu migrieren. Unsere bestehenden Anwendungen verwenden 3.2.9, also viele XML-Konfigurationen. Alle Beans sind in den XML-Dateien definiert. Was wir getan haben, ist zunächst, dass wir unsere bestehenden Anwendungen auf Version Spring 4.2.5 aktualisiert haben, da Spring Boot nur mit Spring 4-Versionen funktioniert.Spring Boot Migration Problem beim Verpacken von JAR und WAR mithilfe von Maven

Unsere Anforderung besteht darin, sowohl FAT JARs als auch WAR-Dateien aus dem Build zu erstellen. Die meisten unserer bestehenden Kunden würden die Bereitstellung von Application Server bevorzugen, daher müssen wir eine WAR-Datei für sie erstellen. Auch für unsere internen Tests und Neuinstallationen planen wir die Verwendung von FAT JARs.

Wie können wir sie in der Maven-Datei erreichen, können wir separat wie unten angegeben. Gibt es irgendein Maven Plug-in, um beide im Single Build zu generieren?

<packaging>jar</packaging> 

oder

<packaging>war</packaging> 

Wir veröffentlichen unsere Artefakte in Nexus-Repository. Daher möchten wir den separaten Repository-Speicherort für JAR-Dateien und WAR-Dateien haben. Können wir das mit der einzelnen pom.xml Datei tun? Eine weitere Frage, wir haben alle XML-Konfigurationen unter WEB-INF Ordner. Wenn wir zur Spring Boot-Anwendung wechseln, muss sie unter dem Ordner resources liegen. Wie können wir sie einfach handhaben? Wenn wir FAT-Jars erstellen, werden die Ressourcen nicht unter WEB-INF angezeigt, da das Projekt webapp einfach ignoriert wird.

Ich freue mich auf einige Hinweise, um die Migration abzuschließen. Tatsächlich haben wir diese Änderungen bereits vorgenommen und es funktioniert gut, aber wir sind in diesen WAR/JAR-Generationen verwirrt.

Update: ich eine andere Frage im Sinn haben, wenn wir unsere bestehenden Anwendungen konvertieren Boot zu springen, haben wir noch WEB-INF-Ordner in der Web-App erhalten oder alles auf die Ressourcen bewegen kann Mappe?. Beim Erstellen der WAR-Datei, ob Spring Boot die Ressourcen auf WEB-INF verschiebt? Wie Spring Boot würde die WAR-Datei erstellen, wenn Sie alle Ressourcen unter dem Ordner resources setzen.

+3

Verwenden Sie einfach einen "Krieg" nicht versuchen, beides zu tun. Der "Krieg" ist auch ausführbar, genau wie ein "Jar". –

Antwort

2

Das Erstellen von WAR und FAT JAR ist sehr einfach mit Gradle.

Mit Maven würde ich versuchen, multi module setup, wo ein Untermodul wird Fett JAR bauen und zweitens wird WAR-Datei zu bauen.

Anwendungslogik kann als drittes Submodul sein und somit eigenständige JAR mit Spring-Konfiguration und Beans sein. Diese Anwendungslogik-JAR wäre eine Abhängigkeit für das fette JAR- und das WAR-Modul. Die WAR-spezifische Konfiguration kann im Maven WAR-Submodul platziert werden.

Ich hatte keine solche Voraussetzung, also weiß nicht, welche Herausforderungen auftreten können. Natürlich würde ich nicht versuchen, maven-assembly-plugin oder andere Verpackung Plugins mit spring-boot-maven-plugin zu integrieren.

In Bezug auf Speicherort der Konfigurationsdateien, legen Sie sie einfach in src/main/resources oder seine Unterordner entsprechend Spring Boot Konventionen. Spring Boot ist ein rechthaberischer Rahmen und wird Ihnen gegenüber am freundlichsten sein, wenn Sie nicht versuchen, den Vorgaben zu widerstehen.

+0

danke für die Antwort – Krishna

+0

Ich habe eine andere Frage, wenn wir zum Spring Boot konvertieren, müssen wir noch WEB-INF-Ordner pflegen und wir können alles in den Ressourcen-Ordner verschieben? – Krishna

+1

Ich denke, Sie sollten alles in Ressourcenordner verschieben. – luboskrnac

2

Maven geht nicht elegant damit um, aber es ist alles andere als schwer zu lösen. Sie können dies mit 3 Pom-Dateien tun. Ein Elternteil, der den Großteil der Konfiguration enthält, und jeweils ein Stück für den Verpackungsteil der Arbeit. Dies würde die Anliegen der beiden unterschiedlichen Montagestrukturen sauber trennen.

Um zu verdeutlichen - ich empfehle hier keine Multi-Modul-Konfiguration, nur mehrere Poms mit Namen wie War-pom.xml und Fat-jar-pom.xml, zusammen mit parent-pom.xml.

+0

Ja. Ich habe das gleiche in meinem Kopf. Es ist besser, ich würde mehrere POM-Dateien erstellen. – Krishna

+0

Wie unterscheidet sich das von dem, was ich vorgeschlagen habe? – luboskrnac

+0

@luboskrnac: Ich empfehle keine Multi-Modul-Konfiguration, nur mehrere Poms. Ich denke nicht, dass Sie ein Modul nur für die Artefaktbildung haben sollten. Ich denke, Sie sollten eine war-pom.xml und eine fat-jar-pom.xml zusammen mit einer parent-pom.xml, alles für das eine Modul. Ich füge das zur Klärung der Antwort hinzu. –