Opret en Fat Jar-app med Spring Boot

1. Introduktion

En af de mere hjerteopvarmende udvikling i de senere år har været en løbende forenkling af, hvordan webapplikationer implementeres.

Spring over alle de kedelige mellemliggende historiske trin, vi ankommer til i dag - når vi ikke kan dispensere med ikke kun besværlige servlets og XML-kedelplade, men for det meste selve serverne.

Denne artikel vil koncentrere sig om skabe en “fedt krukke ” ud af en Spring Boot-applikation - grundlæggende at skabe en enkelt artefakt, der er let at implementere og køre.

Boot giver funktioner til containerfri implementeringer lige ud af kassen: alt hvad vi skal gøre er at tilføje et par konfigurationer i pom.xml:

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

2. Byg og kør

Med denne konfiguration kan vi nu simpelthen bygge projektet med standarden mvn ren installation - intet usædvanligt her.

Og vi kører det med følgende kommando: java -jar - meget enkel og intuitiv.

Korrekt procesadministration ligger uden for denne artikels anvendelsesområde, men en enkel måde at holde processen i gang, selv når vi logger af serveren, er at bruge nohup kommando: nohup java -jar.

Stopper spring-boot projekter er heller ikke anderledes end at stoppe en regelmæssig proces, hvad enten vi bare cntrl + c eller dræbe.

3. Fat Jar / Fat War

Bag scenen, spring-boot pakker alle projektafhængigheder inde i den endelige artefakt sammen med sideprojektklasser (deraf den "fede" krukke). En indbygget Tomcat-server er også indbygget.

Og således er den resulterende artefakt fuldstændig uafhængig, let at implementere ved hjælp af standard Unix-værktøjer (scp, sftp ... osv.) Og kan køres på enhver server med en JVM.

Boot opretter som standard en krukke fil - men hvis vi ændrer emballage ejendom i pom.xml til krig, Maven vil i stedet naturligt opbygge en krig.

Dette vil naturligvis være både eksekverbart som enkeltstående og distribueret til en webcontainer.

4. Yderligere konfiguration

For det meste er der ikke behov for yderligere konfiguration, alt “fungerer bare”, men i nogle specifikke tilfælde skal vi muligvis fortælle det spring-boot eksplicit hvad hovedklassen er. En måde at gøre det på ville være at tilføje en ejendom:

 org.baeldung.boot.Application 

Hvis vi er ikke arver spring-boot-starter-parent, vi bliver nødt til at gøre det i Maven-pluginet:

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

En anden ting, vi muligvis skal gøre i nogle sjældne tilfælde, er at instruere Maven om at gøre det pakker ud nogle afhængigheder:

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

5. Konklusion

I denne artikel kiggede vi på serverfri implementering ved hjælp af "fede" krukker bygget af spring-boot.

Som altid er koden i denne opskrivning tilgængelig på Github.


$config[zx-auto] not found$config[zx-overlay] not found