Erstellen Sie eine Fat Jar App mit Spring Boot

1. Einleitung

Eine der herzerwärmendsten Entwicklungen der letzten Jahre war die kontinuierliche Vereinfachung der Bereitstellung von Webanwendungen.

Wenn wir alle langweiligen historischen Zwischenschritte überspringen, kommen wir heute an - wenn wir nicht nur auf umständliche Servlets und XML-Boilerplate verzichten können, sondern vor allem auf die Server selbst.

Dieser Artikel konzentriert sich auf das Erstellen eines „ Fat Jar“ aus einer Spring Boot-Anwendung - im Grunde genommen, um ein einzelnes Artefakt zu erstellen, das einfach bereitzustellen und auszuführen ist.

Boot bietet sofort Funktionen für Bereitstellungen ohne Container: Wir müssen lediglich einige Konfigurationen in die Datei pom.xml einfügen:

  org.springframework.boot spring-boot-starter-web 2.0.1.RELEASE     org.springframework.boot spring-boot-maven-plugin 2.0.1.RELEASE  

2. Erstellen und ausführen

Mit dieser Konfiguration können wir das Projekt jetzt einfach mit der Standard- MVN-Neuinstallation erstellen - hier nichts Ungewöhnliches.

Und wir führen es mit dem folgenden Befehl aus: java -jar - sehr einfach und intuitiv.

Die richtige Prozessmanagement geht über den Rahmen dieses Artikels sprengen , aber eine einfache Möglichkeit , den Prozess am Laufen zu halten , auch wenn wir den Server abzumelden ist , die verwenden nohup Befehl ein : nohup java -jar.

Das Stoppen von Spring-Boot- Projekten unterscheidet sich auch nicht vom Stoppen eines regulären Prozesses, egal ob wir einfach cntrl + c oder kill.

3. Fat Jar / Fat War

Hinter den Kulissen packt Spring-Boot alle Projektabhängigkeiten innerhalb des endgültigen Artefakts zusammen mit den Projektklassen (daher das „fette“ Glas). Ein eingebetteter Tomcat-Server ist ebenfalls integriert.

Somit ist das resultierende Artefakt vollständig in sich geschlossen, einfach mit Standard-Unix-Tools (scp, sftp usw.) bereitzustellen und kann auf jedem Server mit einer JVM ausgeführt werden.

Standardmäßig erstellt Boot eine JAR- Datei. Wenn wir jedoch die Verpackungseigenschaft in pom.xml in war ändern , erstellt Maven stattdessen auf natürliche Weise einen Krieg .

Dies kann natürlich sowohl als eigenständige Datei ausgeführt als auch in einem Webcontainer bereitgestellt werden.

4. Weitere Konfiguration

Meistens ist keine zusätzliche Konfiguration erforderlich, alles „funktioniert einfach“, aber in bestimmten Fällen müssen wir Spring-Boot möglicherweise explizit mitteilen, um welche Hauptklasse es sich handelt. Eine Möglichkeit wäre, eine Eigenschaft hinzuzufügen:

 org.baeldung.boot.Application 

Falls wir Spring-Boot-Starter-Parent nicht erben, müssen wir dies im Maven-Plugin tun:

 org.springframework.boot spring-boot-maven-plugin 2.0.1.RELEASE  org.baeldung.boot.Application ZIP  

In einigen seltenen Fällen müssen wir Maven möglicherweise anweisen, einige Abhängigkeiten zu entpacken :

 org.springframework.boot spring-boot-maven-plugin    org.jruby jruby-complete    

5. Schlussfolgerung

In diesem Artikel haben wir uns mit der Bereitstellung ohne Server unter Verwendung von „fetten“ Gläsern befasst, die von Spring-Boot erstellt wurden.

Wie immer ist der Code in dieser Beschreibung auf Github verfügbar.