Créer une application Fat Jar avec Spring Boot

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.