web-dev-qa-db-fra.com

Utiliser Intellij pour construire War et déployer sur Tomcat

Mon flux de travail de base est dans le terminal mvn clean install sur mon répertoire de base. Cela crée un répertoire cible avec un fichier WAR. Je copie ce fichier war dans le répertoire webapps de mon Tomcat. 

Si j'apporte des modifications, je dois évidemment répéter le processus fastidieux. J'utilise Intellij Ultimate 13.1.6 et je sais qu'il est possible de faire tout cela par le biais de IDE basé sur ce guide

Avant de commencer, je lance donc mvn clean sur ma base, ce qui supprime le répertoire cible. 

Maintenant, je vais commencer quand je suis dans la structure du projet -> Artefacts et créé une nouvelle application Web: Archive. Je l'ai nommé nom_projet et il avait un répertoire de sortie différent par défaut (baseDir/out/artefacts/nom_projet vs baseDir/target), ce qui m'a laissé tout défaut et OK. 

Maintenant, je vais à Exécuter -> Modifier les configurations et crée un nouveau serveur Tomcat local en utilisant les paramètres suivants  enter image description here

et dans l'onglet Déploiement, j'ajoute l'artefact qui est construit dans mon lancement Avant, comme indiqué dans ma photo. Assez simple.

Cependant, chaque fois que je lance le serveur via Intellij, il démarre correctement mais rien n’est déployé. Je reçois l'erreur:

Artifact project_name: com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: /Users/path/to/workspace/project_name/out/artifacts/project_name/project_name.war not found for the web module.

Et je revérifie mon répertoire et, comme le montre l'erreur, rien n'est créé. Pas même le répertoire de sortie. 

Qu'est-ce que je fais mal? Je sais qu'une solution consiste à retourner au terminal, à exécuter mvn clean install et, avec le fichier .war créé, à intégrer cela dans la configuration de déploiement. Je me sentais comme si c'était plus un hack puisque je le fais toujours en ligne de commande et si je ne l'ai pas déjà construit, je ne peux pas définir la cible comme répertoire pour trouver le fichier war. 

Toute aide est appréciée.

22
Joey

Liste de contrôle de ce que vous pouvez faire pour vérifier si tout va bien:

1) Construisez manuellement les artefacts à l'aide de Construire> Construire des artefacts.

2) Vérifiez si l'artefact se trouve dans le répertoire de sortie prévu (out/artifacts/xxx).

3) Sinon, sélectionnez Fichier> Structure de projet> Artefacts.

4) Sélectionnez le fichier d'artefact en question (nom_projet dans ce cas).

5) Vérifiez si le répertoire de sortie est correct. Essayez éventuellement de créer vous-même ce répertoire au cas où IntelliJ ne le ferait pas (même si cela me surprendrait)

6) Vérifiez si le contenu est correct.

7) Vous pouvez éventuellement cocher la case "Construire selon la marque" pour que la dernière version de votre code soit toujours déployée à chaque exécution du serveur.

Notez que pour déployer des fichiers WAR sur un Tomcat, vous préférerez utiliser le fichier WAR éclaté. Cela accélère considérablement le déploiement/test/débogage.

25
xaviert

J'ai eu cette erreur quand j'ai essayé de lancer une application en utilisant Run. Le problème était que, pour une raison quelconque, le fichier WAR n'avait pas été déployé même après avoir sélectionné Construire-> Construire des artefacts . Solution: J'ai fermé Idea puis réimporté le projet et choisi comme artefact war-explosé . Cette fois, le déploiement a fonctionné.

7
vovahost

J'ai eu ce problème, la raison est dans la structure du projet, le répertoire de sortie des artefacts n'existe pas

 enter image description here


Solutions:

  1. Aller à la structure du projet:

File -> Project Structure

  1. Puis cliquez sur le bouton du répertoire

 enter image description here

  1. Vous créez le répertoire un par un en fonction du répertoire de sortie indiqué:

 enter image description here

  1. Puis redémarrez votre projet.
3
aircraft

J'ai eu le même problème et aucune des solutions ci-dessus n'a résolu le problème. Partager ici si quelqu'un d'autre rencontre le même problème. 

Le serveur Tomcat dans mon cas a été configuré pour exécuter le port JMX sur 18099 au lieu de 1099. Par conséquent, l'artefact n'a jamais été déployé car le port JMX utilisé par défaut dans la configuration IntelliJ Tomcat est 1099.

Le changer à 18099 ou supprimer cette configuration Tomcat particulière a résolu le problème.

En bout de ligne: si vous souhaitez que votre artefact soit déployé, assurez-vous que le port JMX configuré dans IntelliJ correspond au port JMX réellement utilisé par votre serveur Tomcat.

1
isaac.hazan

J'ai essayé les solutions ci-dessus, mais le fichier WAR ne fonctionnait pas lorsque je l'ai déployé sur le serveur Tomcat. Au lieu des solutions ci-dessus, tapez simplement mvn clean puis mvn install dans la fenêtre du terminal. Votre fichier WAR est maintenant situé dans 

ProjectName/target/
0
Niamat Zawad

Vérifiez le chemin du répertoire de sortie. Notez que l'utilisation de ~ dans le chemin ne fonctionnera pas.

0
Rammgarot