Erstelle eine Fat Jar App mit Spring Boot
1. Einführung
Eine der herzerwärmendsten Entwicklungen der letzten Jahre war die fortlaufende Vereinfachung der Bereitstellung von Webanwendungen.
Wenn wir alle langweiligen historischen Zwischenschritte auslassen, kommen wir heute zu einem Punkt, an dem wir nicht nur auf umständliche Servlets und XML-Boilerplate verzichten können, sondern vor allem auf die Server selbst.
Dieser Artikel konzentriert sich aufcreating a “fat jar” out of a Spring Boot application - 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: Sie müssen lediglich einige Konfigurationen inpom.xml:hinzufü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 dem Standardmvn clean install erstellen - hier nichts Ungewöhnliches.
Und wir führen es mit dem folgenden Befehl aus:java -jar <artifact-name> - sehr einfach und intuitiv.
Eine ordnungsgemäße Prozessverwaltung würde den Rahmen dieses Artikels sprengen. Eine einfache Möglichkeit, den Prozess auch dann fortzusetzen, wenn Sie sich vom Server abmelden, besteht darin, den Befehlnohup zu verwenden:nohup java -jar <artifact-name>.
Das Stoppen vonspring-boot Projekten unterscheidet sich auch nicht vom Stoppen eines regulären Prozesses, unabhängig davon, ob Sie einfachcntrl+c oderkill <pid>. ausführen
3. Fat Jar / Fat War
Hinter den Kulissen packtspring-boot alle Projektabhängigkeiten innerhalb des endgültigen Artefakts zusammen mit den Projektklassen (daher das "fette" Glas). Ein eingebetteter Tomcat-Server ist ebenfalls integriert.
Und so ist das resultierende Artefakt vollständig in sich geschlossen, lässt sich einfach mit Standard-Unix-Tools (scp, sftp usw.) bereitstellen und kann auf jedem Server mit einer JVM ausgeführt werden.
Standardmäßig erstellt Boot einejar-Datei. Wenn wir jedoch diepackaging-Eigenschaft inpom.xml inwar ändern, wird Maven stattdessen natürlichbuild a war.
Dies ist natürlich sowohl als eigenständige Anwendung als auch in einem Webcontainer ausführbar.
4. Weitere Konfig
Meistens ist keine zusätzliche Konfiguration erforderlich, alles „funktioniert einfach“, aber in bestimmten Fällen müssen Siespring-boot möglicherweise explizit mitteilen, um welche Hauptklasse es sich handelt. Eine Möglichkeit wäre, eine Eigenschaft hinzuzufügen:
org.example.boot.Application
Wenn Sienot erben Spring-Boot-Starter-Parent, müssen Sie dies im Maven-Plugin tun:
org.springframework.boot
spring-boot-maven-plugin
2.0.1.RELEASE
org.example.boot.Application
ZIP
In einigen seltenen Fällen müssen Sie den Maven möglicherweise anweisen,unpackeinige Abhängigkeiten zu verwenden:
org.springframework.boot
spring-boot-maven-plugin
org.jruby
jruby-complete
5. Fazit
In diesem Artikel haben wir uns mit der Bereitstellung ohne Server unter Verwendung von "fetten" Gläsern befasst, die vonspring-boot. erstellt wurden
Wie immer ist der Code in dieser Beschreibung alleover on Github verfügbar.