Lag en Fat Jar-app med Spring Boot

1. Introduksjon

En av de mer hjertevarmende utviklingene de siste årene har vært en kontinuerlig forenkling av hvordan webapplikasjoner distribueres.

Hopp over alle de kjedelige mellomliggende historiske trinnene, kommer vi til i dag - når vi ikke kan dispensere med ikke bare tungvint servlets og XML-kjeleplate, men for det meste selve serverne.

Denne artikkelen vil konsentrere seg om skape en “fettkrukke ” ut av en Spring Boot-applikasjon - i utgangspunktet å lage en enkelt gjenstand som er enkel å distribuere og kjøre.

Boot gir muligheter for containerløse distribusjoner rett ut av esken: alt vi trenger å gjøre er å legge til et par konfigurasjoner 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. Bygg og løp

Med denne konfigurasjonen kan vi nå bare bygge prosjektet med standarden mvn ren installasjon - ingenting uvanlig her.

Og vi kjører det med følgende kommando: java -jar - veldig enkelt og intuitivt.

Riktig prosessadministrasjon ligger utenfor omfanget av denne artikkelen, men en enkel måte å holde prosessen i gang selv når vi logger av serveren, er å bruke nohup kommando: nohup java -jar.

Stopper vårstøvel prosjekter er heller ikke annerledes enn å stoppe en vanlig prosess, enten vi bare cntrl + c eller drepe.

3. Fat Jar / Fat War

Bak scenen, vårstøvel pakker alle prosjektavhengighetene inne i den endelige gjenstanden langs sideprosjektklasser (derav "fett" glasset). En innebygd Tomcat-server er også innebygd.

Og dermed er den resulterende gjenstanden fullstendig selvstendig, enkel å distribuere ved hjelp av standard Unix-verktøy (scp, sftp ... osv.) Og kan kjøres på alle servere med en JVM.

Som standard oppretter Boot en krukke fil - men hvis vi endrer emballasje eiendom i pom.xml til krig, Maven vil i stedet naturlig bygge en krig.

Dette vil selvfølgelig være både kjørbart som frittstående, og distribuert til en webcontainer.

4. Videre konfigurering

Det meste av tiden er ingen ekstra konfigurasjon nødvendig, alt “bare fungerer”, men i noen spesifikke tilfeller må vi kanskje fortelle det vårstøvel eksplisitt hva hovedklassen er. En måte å gjøre det på ville være å legge til en eiendom:

 org.baeldung.boot.Application 

I tilfelle vi er det ikke arver vår-boot-starter-foreldre, vi må gjøre det i Maven-pluginet:

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

En annen ting vi i noen sjeldne tilfeller kanskje trenger å gjøre er å instruere Maven om å gjøre det pakke ut noen avhengigheter:

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

5. Konklusjon

I denne artikkelen så vi på serverfri distribusjon ved hjelp av "fett" krukker bygget av vårstøvel.

Som alltid er koden i denne oppskriften tilgjengelig på Github.


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