Erstellen Sie eine Fat Jar App mit Spring Boot

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.