37 votes

Pourquoi le mvn clean de Maven ne fonctionne-t-il jamais la première fois ?

Neuf fois sur dix, quand je cours mvn clean sur mes projets, je rencontre une erreur de construction. Je dois exécuter mvn clean plusieurs fois jusqu'à ce que l'erreur de construction disparaisse. Quelqu'un d'autre est-il confronté à ce problème ? Existe-t-il un moyen de corriger ce problème dans Maven ? Sinon, comment le contourner ? J'ai écrit un fichier bat qui supprime les dossiers cibles et cela fonctionne bien, mais ce n'est pas pratique lorsque vous travaillez sur plusieurs projets. J'utilise Maven 2.2.1.

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to delete directory: C:\Documents and Settings\user\My Documents\software-developm
ent\a\b\c\application-domain\target. Reason: Unable to delete directory C:\Documen
ts and Settings\user\My Documents\software-development\a\b\c\application-domai
n\target\classes\com\a\b

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6 seconds
[INFO] Finished at: Fri Oct 23 15:22:48 EDT 2009
[INFO] Final Memory: 11M/254M
[INFO] ------------------------------------------------------------------------

3 votes

mvn clean fonctionne bien, votre système d'exploitation ne le fait pas > :)

38voto

Ken Liu Points 7779

Il se peut que votre IDE ou un autre processus s'accroche au dossier "target" et empêche maven de le supprimer.

1 votes

J'utilise Eclipse avec l'intégration de Maven, mais pour une raison quelconque, j'utilise toujours la ligne de commande pour nettoyer et construire. Je vais essayer de nettoyer dans Eclipse et voir si j'obtiens les mêmes résultats.

0 votes

Le commentaire d'Ediz Türkoglu ci-dessous est l'un des principaux processus sur une machine Windows qui cause ce problème. Je peux confirmer que c'était le cas en utilisant Netbeans 8.0 sur Windows 7. La mise en pause de l'indexation a fonctionné pour moi

0 votes

Je suis également confronté à un problème similaire. Chaque fois que j'essaie de faire clean install en utilisant le plugin Eclipse Maven, il construit avec succès le projet. Mais lorsque j'essaie d'exécuter l'application java via main, j'obtiens l'erreur suivante : Erreur java.lang : Problème de compilation non résolu : . Maintenant, quand je clean install et exécuter l'application une deuxième fois, l'application s'exécute avec succès. Quelqu'un peut-il me dire ce que je fais de mal ?

21voto

Ediz Türkoğlu Points 141

Cela est principalement dû à Indexation de Windows . A l'exclusion de cible dossiers ou .jar L'extension de l'indexation résoudra le problème. Ma meilleure pratique consiste à exclure .jar l'extension.

Pour exclure les fichiers cibles :

  1. Cliquez sur l'icône Windows/menu Démarrer
  2. Tipo indexation dans le champ de recherche et cliquez sur Options d'indexation
  3. Cliquez ensuite sur Modifier pour examiner l'indexation des répertoires.
  4. Supprimer les contrôles de Cible les dossiers.

Pour exclure tout .jar des fichiers :

  1. Cliquez sur l'icône Windows/menu Démarrer
  2. Tipo indexation dans le champ de recherche et cliquez sur Options d'indexation
  3. Cliquez ensuite sur Avancé bouton.
  4. Passez par Types de fichiers onglet.
  5. Dans la liste, trouvez bocal et décochez-la.

0 votes

Le problème a été résolu une fois que le target n'est pas vérifié. Mais de toute façon .jar ne peut pas être décoché car il est désactivé dans mon cas.

0 votes

Je confirme que cette solution a fonctionné pour moi instantanément en utilisant maven et netbeans 8.0 - Je ne vois pas non plus de raison d'autoriser Windows à indexer les fichiers .java de développement. Je ne recommanderais pas vraiment d'utiliser la recherche Windows pour trouver le contenu de ces fichiers en utilisant un IDE.

13voto

JCameron Points 129

Désactiver le service Window Search sur Win7 a fonctionné pour moi.

11voto

Dean Povey Points 4761

Le problème est qu'eclipse lit constamment les répertoires et les artefacts de votre projet maven et a inévitablement l'un d'entre eux ouvert lorsque vous nettoyez.

La meilleure approche est d'exécuter maven clean à partir du plugin eclipse (j'utilise m2eclipse et cela semble bien fonctionner).

Une autre approche qui fonctionne est de lancer mvn clean avec le maven.clean.failOnError réglé sur false . Si vous l'exécutez deux fois, cela suffit généralement pour que tout fonctionne correctement, par ex.

mvn clean -Dmaven.clean.failOnError=false && mvn clean -Dmaven.clean.failOnError=false

Vous voudrez probablement désactiver la fonction "Construire automatiquement" d'Eclipse dans le menu du projet pendant que vous faites cela.

0 votes

N'a pas fonctionné pour moi. Maintenant, il montre la liste des noms de fichiers non supprimés.

3voto

Nicholas Riley Points 26161

Ce problème se pose souvent sous Windows, car ce dernier ne permet pas (normalement) de supprimer un fichier en cours d'utilisation. Outre le fait de revoir (péniblement) toute la configuration de Maven, le mieux est de ne pas construire sous Windows (par exemple, utiliser une machine virtuelle Linux/Solaris/autres).

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