Créez une application Fat Jar avec Spring Boot

1. Introduction

L'un des développements les plus réconfortants de ces dernières années a été la simplification continue du déploiement des applications Web.

Sautant toutes les étapes historiques intermédiaires ennuyeuses, nous arrivons à aujourd'hui - quand nous pouvons nous passer non seulement des servlets encombrants et du passe-partout XML, mais surtout des serveurs eux-mêmes.

Cet article se concentrera sur la création d'un « gros pot» à partir d'une application Spring Boot - essentiellement pour créer un seul artefact facile à déployer et à exécuter.

Boot fournit des fonctionnalités pour les déploiements sans conteneur dès la sortie de la boîte: tout ce que nous devons faire est d'ajouter quelques configurations dans le 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. Construire et exécuter

Avec cette configuration, nous pouvons maintenant simplement construire le projet avec l' installation standard mvn clean - rien d'inhabituel ici.

Et nous l'exécutons avec la commande suivante: java -jar - très simple et intuitif.

Une bonne gestion des processus est au - delà de la portée de cet article, mais d' une façon simple de maintenir le processus en cours d' exécution , même lorsque nous LogOff le serveur est d'utiliser la nohup commande: nohup java jar.

L'arrêt des projets de démarrage au printemps n'est pas non plus différent de l'arrêt d'un processus normal, que ce soit simplement cntrl + c ou tuer.

3. Fat Jar / Fat War

Dans les coulisses, spring-boot regroupe toutes les dépendances du projet à l'intérieur de l'artefact final le long des classes de projet secondaires (d'où le «gros» jar). Un serveur Tomcat intégré est également intégré.

Et ainsi, l'artefact résultant est complètement autonome, facile à déployer à l'aide des outils Unix standard (scp, sftp… etc) et peut être exécuté sur n'importe quel serveur avec une JVM.

Par défaut, Boot crée un fichier jar - mais si nous changeons la propriété d' empaquetage de pom.xml en war , Maven construira naturellement une guerre .

Ce sera bien sûr à la fois exécutable de manière autonome et déployé sur un conteneur Web.

4. Configuration supplémentaire

La plupart du temps, aucune configuration supplémentaire n'est nécessaire, tout «fonctionne simplement», mais dans certains cas spécifiques, nous pouvons avoir besoin de dire explicitement à spring-boot quelle est la classe principale. Une façon de le faire serait d'ajouter une propriété:

 org.baeldung.boot.Application 

Au cas où nous n'hériterions pas de spring-boot-starter-parent, nous devrons le faire dans le plugin Maven:

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

Une autre chose que nous pourrions devoir faire dans certains cas rares est de demander à Maven de décompresser certaines dépendances:

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

5. Conclusion

Dans cet article, nous nous sommes penchés sur le déploiement sans serveur à l'aide de jars «lourds» créés par spring-boot.

Comme toujours, le code de cet article est disponible sur Github.