web-dev-qa-db-fra.com

Différences entre jar et war dans Spring Boot?

Je suis sur le point de construire mon premier site Web en Java avec Spring Framework à l'aide de Spring Boot. Il est beaucoup plus facile de le créer dans jar, mais j'ai quelques questions à ce sujet.

Quelles sont les différences en général? 

Dans les fichiers jar, les vues sont sous /resources/templates, mais dans le fichier war, elles sont sous /webapp/WEB-INF/.

Quelles sont les différences? Puis-je déployer une jar sur un hôte en ligne?

13
Hama Saadwn

On peut dire à Spring Boot de produire un «gros JAR» contenant toutes les dépendances de votre module/service et pouvant être exécuté avec Java -jar <your jar> . Voir "Créer un fichier JAR exécutable avec Maven" ici .

Vous pouvez également indiquer à Spring Boot de produire un fichier WAR , auquel cas vous choisirez probablement de le déployer dans un conteneur Web tel que Tomcat ou Jetty.

Beaucoup plus de détails sur le déploiement de Spring Boot ici .

7
glytching

Exécution de spring-boot application en tant que graisse *.jar

Il est possible de générer le fichier appelé fat JAR, qui est un fichier *.jar exécutable avec un conteneur d'application intégré (Tomcat comme option par défaut) . Il existe des plugins spring-boot pour différents systèmes de construction. Voici celui pour maven: spring-boot-maven-plugin

Pour exécuter le type de fat*.jar, vous pouvez exécuter une commande simple:

Java -jar *.jar

Ou en utilisant l'objectif spring-boot-maven:

mvn spring-boot:run

Construire l'application spring-boot en tant qu'archive *.war

L'autre option consiste à expédier votre application sous forme de fichier war à l'ancienne. Il pourrait être déployé dans n’importe quel conteneur de servlets. Voici la liste des étapes à suivre:

  1. Remplacez packaging par war (en parlant du pom.xml de maven)
  2. Hériter de la classe d'application spring-boot principale de SpringBootServletInitializer et remplacer la méthode SpringApplicationBuilder configure(SpringApplicationBuilder) (voir javadoc )
  3. Assurez-vous de définir la scope de spring-boot-starter-Tomcat comme provided

Plus d'informations dans la documentation de Spring-Boot

5
rilaby

Cela dépend de votre déploiement. Si vous envisagez de déployer votre application sur un serveur d'applications Java EE existant (par exemple, Tomcat), l'approche standard consiste à effectuer une génération war

Lorsque vous utilisez l'approche Fat jar, votre application est déployée sur un conteneur d'applications incorporé fourni par Spring Boot. Effectuez Déploiement d'applications Spring Boot pour plus d'informations.

4
lazyneuron

J'étais sous le même problème lorsque j'ai déployé mon problème de pot gratuitement sur mon local. Ensuite, je devais en faire la démonstration sur le serveur. Vous pouvez créer un fichier war en modifiant le tag pom.xml 

<packaging>jar</packaging>

à

<packaging>war</packaging>

et vous aurez un fichier war dans votre cible que vous pourrez déployer sur votre serveur (Tomcat dans mon cas)

1
Groot