235 votes

Importer les dépendances Maven dans IntelliJ IDEA

J'ai une petite question sur IntelliJ IDEA 11. Je viens d'importer un projet depuis subversion - c'est un projet maven. Mais j'ai un problème dans les dépendances de la bibliothèque maven de sorte que je ne peux pas inclure toutes les dépendances maven automatiquement - IDEA montre des erreurs de dépendance seulement quand j'ouvre cette classe / C'est ce que j'obtiens ici :

enter image description here

Je veux donc que toutes les dépendances soient ajoutées automatiquement - est-ce possible ou dois-je passer par tous les fichiers de classe pour identifier et ajouter les dépendances maven ? !

UPDATE : Après avoir fait quelques modifications, j'ai trouvé comment résoudre mon problème d'une certaine manière. C'est ce que j'ai fait : enter image description here

mais je pense que logiquement il n'inclura pas et ne vérifiera pas les nouvelles dépendances à l'avance ? !.... Existe-t-il une zone de paramétrage pour cela dans intelliJ - exportation automatique des dépendances vers le classpath ? !

0 votes

Que voulez-vous dire par "automatiquement" ? Vous devez déclarer toutes vos dépendances dans votre POM comme pour tout projet Maven normal. IntelliJ ou un autre IDE les téléchargera simplement si elles y sont déclarées...

9 votes

Il télécharge toutes les dépendances mais il ne semble pas les ajouter toutes au classpath...

3 votes

Et un autre problème est qu'intelliJ ne me montre les erreurs soulignées en rouge que lorsque j'ouvre ce fichier java...

321voto

Alonso Dominguez Points 3292

IntelliJ devrait télécharger et ajouter automatiquement toutes vos dépendances au classpath du projet, pour autant que votre POM soit conforme et que toutes les dépendances soient disponibles.

Lors de l'importation de projets Maven dans IntelliJ, une boîte d'information s'affiche généralement pour vous demander si vous souhaitez configurer les éléments suivants Auto-Importation pour les projets Maven. Cela signifie que si vous apportez des modifications à votre POM, ces modifications seront chargées automatiquement.

Vous pouvez activer cette fonctionnalité en allant dans Fichier > Paramètres > Maven > Importation, il y a une case à cocher qui dit "Importer les projets Maven automatiquement".

Si cela ne vous aide pas, je vous suggère de faire un nettoyage complet et de recommencer :

  • Fermez la fenêtre de votre projet (et IntelliJ) et supprimez tous les fichiers *.iml et tous les fichiers .idea dossiers (il devrait y en avoir un par module)
  • Exécuter mvn clean install à partir de la ligne de commande
  • Réimporter le projet dans IntelliJ et faire attention quand il vous demande d'activer l'auto-importation.

Mise à jour d'IntelliJ 2016 :

Le site Importer automatiquement des projets Maven a été déplacé vers Construction, exécution, déploiement > Outils de construction > Maven > Importation dans vos préférences IntelliJ.

0 votes

Donc votre solution était de marquer les dépendances comme exportées ? c'est bizarre ! J'utilise beaucoup IntelliJ et Maven et aucun de mes projets (certains d'entre eux sont des multi-projets) n'a la fonction d'exportation activée... est-ce que c'est Community Edition ou Ultimate ?

1 votes

Il s'agit d'une édition Ultimate, mais le projet que j'ai importé a été construit sur Eclipse - de sorte que .classpath a été activé là-bas, mais IntelliJ utilise .iml - Je pense donc qu'il est logique d'inclure ces librairies pour la première fois si ce projet n'avait pas de fichier .iml avant . ? !

1 votes

Oh, ok - avez-vous essayé de l'importer comme un projet Maven plutôt qu'un projet Eclipse ? J'ai l'habitude de ne pas enregistrer les fichiers liés à l'IDE dans mes dépôts de sources lorsque je travaille avec des projets Maven : si c'est un projet Maven, alors Maven est la règle.

77voto

rogerdpack Points 12806

Correction avant IntelliJ 14

Fichier [menu] -> Paramètres -> maven -> import et décochez "utiliser maven3 pour importer le projet"

réf : http://youtrack.jetbrains.com/issue/IDEA-98425 (qui peut avoir quelques autres idées aussi)

Corriger IntelliJ 15+

J'ai rencontré ce problème à nouveau, avec IntelliJ 15 cette fois, qui ne dispose plus de l'option "utiliser maven3 pour importer". La cause est que parfois IntelliJ "n'analyse pas correctement les dépendances maven" et s'il n'arrive pas à analyser correctement l'une d'entre elles, il abandonne sur tous d'entre eux, apparemment. Vous pouvez savoir si c'est le cas en ouvrant la fenêtre d'outils des projets Maven (menu Affichage -> Fenêtres d'outils -> Projets Maven). Développez ensuite l'un de vos projets maven et ses dépendances. Si les dépendances sont toutes soulignées en rouge, "Houston, nous avons un problème". enter image description here

Vous pouvez en fait voir le réel en passant la souris sur le nom du projet lui-même.

enter image description here

Dans mon cas, le message "Problems : Aucune version disponible pour XXX" ou "Impossible de lire le descripteur de l'artefact org.xy.z" réf : https://youtrack.jetbrains.com/issue/IDEA-128846 et https://youtrack.jetbrains.com/issue/IDEA-152555

Il semble que dans ce cas, j'avais affaire à un jar qui n'avait pas de fichier pom associé (dans notre repo maven nexus, et aussi dans mon dépôt local). Si c'est également votre problème, une solution de contournement : si vous n'avez pas réellement besoin d'utiliser les classes de ce jar dans votre propre code (par exemple une dépendance maven transitive uniquement), vous pouvez en fait vous en sortir en le mettant en commentaire dans le pom (temporairement), en rechargeant le projet maven, puis en le décommentant. D'une certaine manière, après ce point, IntelliJ "se souvient" de ses anciennes dépendances de travail. L'ajout temporaire d'une exclusion transitive maven peut également être utile, si vous rencontrez ce problème à partir d'une chaîne de dépendances transitive."

Une autre chose qui pourrait aider est d'utiliser une "version plus récente" de maven que la version 3.0.5 fournie. Afin de le configurer pour qu'il soit utilisé par défaut, fermez toutes vos fenêtres intellij, puis ouvrez les préférences -> construction, exécution et déploiement -> outils de construction -> maven, et changez le répertoire d'origine de maven, il devrait être indiqué "Pour le projet par défaut" en haut lorsque vous l'ajustez, bien que vous puissiez l'ajuster pour un projet particulier aussi bien, tant que vous "réimportez" après l'avoir ajusté.

Effacer les caches

Suppression de vos dossiers de cache intellij (Windows : HOMEPATH/.{IntellijIdea,IdeaC}XXX linux ~/.IdeaIC15) et/ou désinstallation et réinstallation d'IntelliJ lui-même. Cela peut également être fait en allant dans Fichier [menu] -> Invalidate Caches / Restart... . Cliquez sur invalidate and restart . Cela réindexera l'ensemble de votre projet et résoudra de nombreux problèmes difficiles à tracer avec IntelliJ.

2 votes

Étrangement, presque tous les autres articles conseillent de cocher l'option "Utiliser Maven3 pour importer le projet" pour résoudre ce problème, alors qu'en fait, la décocher a résolu le problème pour moi. Pourquoi ? Je n'en sais rien. Merci !

4 votes

Dans la v14 ultimate, j'ai choisi un maven externe et tout est redevenu fonctionnel.

0 votes

@AlikElzin-kilaka Changer le répertoire home de maven en home externe de maven aide beaucoup . Après avoir mis à jour IDEA à v14 ultimate, je ne pouvais pas lancer mon projet dans IDEA en raison de "No tomcat6 plugin found", mais je peux lancer le projet en utilisant la commande mvn, et le changement du répertoire d'origine maven à un répertoire externe a résolu le problème.

30voto

CrazyCoder Points 103123

Essayez de réimporter le projet à partir du panneau Projets Maven dans IntelliJ IDEA. Cela devrait permettre de télécharger et de configurer toutes les dépendances définies dans votre fichier pom.xml automatiquement.

Si le téléchargement ne fonctionne pas à partir d'IDEA pour une raison quelconque, essayer mvn install à partir de la ligne de commande et voir si les dépendances peuvent être récupérées.

Bien entendu, toutes les dépendances requises et tous les référentiels personnalisés doivent être définis directement dans le fichier pom.xml fichier.

5voto

Jano Points 37593

L'importation des dépendances Maven peut ne pas fonctionner si vous importez le même chemin plusieurs fois. Cela peut se produire automatiquement après l'importation d'un projet Maven existant. Je n'arrive pas à comprendre pourquoi cela se produit, et je suis donc enclin à penser qu'il s'agit d'un bogue.

Par exemple, si mon projet est

hibernate
  src/main
  src/test

les trois chemins peuvent être importés comme noeuds supérieurs :

hibernate
src/main
src/test

Si tel est le cas, les dépendances semblent correctes, mais elles ne seront pas utilisées tant que vous n'aurez pas supprimé les chemins superflus (dans ce cas, src/main et src/test ). Une fois que vous avez fait cela, rafraîchissez et cliquez sur Build > Rebuild Project. IDEA récupérera les dépendances.

Un symptôme de ce problème est que IDEA vous avertit d'un chemin dupliqué lorsque vous vérifiez manuellement une bibliothèque (deuxième capture d'écran dans la question).

Il existe plusieurs façons de relire les dépendances au cas où vous en auriez besoin. Si vous allez dans l'onglet "Maven Projects", il y a une icône "Reimport All Maven Projects" en haut à gauche de l'onglet. Si vous pensez que IDEA s'est embrouillé, vous pouvez cliquer sur File > Invalidate Caches.

5voto

Markus Coetzee Points 939

Lorsque vous créez un nouveau projet, il vous suffit de choisir l'option :

...
Importer un projet à partir d'un modèle externe
Créer une structure de projet IDEA sur un modèle externe existant (Eclipse, Maven...)
...

Vous trouverez que c'est assez simple à partir de là.
Et dans votre cas, vous pouvez fermer votre projet et simplement en créer un nouveau. Choisissez le répertoire de votre projet, ce qui le remplacera, faisant de lui un projet Maven.

0 votes

Je suis d'accord. Il est presque certain que le PO a simplement mal importé le projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X