Créer 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 en cours du déploiement des applications Web.
Nous arrivons aujourd’hui au-delà de toutes les étapes historiques ennuyeuses et intermédiaires - lorsque nous pouvons nous passer non seulement de servlets encombrantes et de XML, mais surtout des serveurs eux-mêmes.
Cet article se concentrera surcreating a “fat jar” out of a Spring Boot application - 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 vous avez à faire est d'ajouter quelques configurations dans votrepom.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 le standardmvn clean install - rien d'inhabituel ici.
Et nous l'exécutons avec la commande suivante:java -jar <artifact-name> - très simple et intuitif.
Une bonne gestion des processus dépasse le cadre de cet article, mais un moyen simple de maintenir le processus en cours d'exécution même lorsque vous fermez la session du serveur consiste à utiliser la commandenohup:nohup java -jar <artifact-name>.
L'arrêt des projetsspring-boot n'est pas non plus différent de l'arrêt d'un processus normal, que vous soyez simplementcntrl+c oukill <pid>.
3. Fat Jar / Fat War
Dans les coulisses,spring-boot empaquette toutes les dépendances du projet à l'intérieur de l'artefact final le long des classes de projet secondaires (d'où le pot «gros»). Un serveur Tomcat intégré est également intégré.
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 tout serveur doté d'une machine virtuelle Java.
Par défaut, Boot crée un fichierjar - mais si nous changeons la propriétépackaging depom.xml enwar, Maven sera à la place naturellementbuild a war.
Ce sera bien sûr à la fois exécutable en autonome et déployé dans un conteneur Web.
4. Config supplémentaire
La plupart du temps, aucune configuration supplémentaire n'est nécessaire, tout «fonctionne simplement», mais dans certains cas spécifiques, vous devrez peut-être indiquer explicitement àspring-boot quelle est la classe principale. Une façon de le faire serait d’ajouter une propriété:
org.example.boot.Application
Si vous héritez denot spring-boot-starter-parent, vous devrez le faire dans le plugin maven:
org.springframework.boot
spring-boot-maven-plugin
2.0.1.RELEASE
org.example.boot.Application
ZIP
Une autre chose que vous devrez peut-être faire dans de rares cas est d'indiquer à maven deunpack certaines dépendances:
org.springframework.boot
spring-boot-maven-plugin
org.jruby
jruby-complete
5. Conclusion
Dans cet article, nous avons examiné le déploiement sans serveur à l'aide de fichiers JAR «lourds» créés parspring-boot.
Comme toujours, le code de cette écriture est entièrement disponibleover on Github.