J’utilise STS (suite d’outils spring) + plugin maven.
Chaque fois que je lance mon application en utilisant maven-clean
je vois l’erreur suivante:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building hhsystem ui 1.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ ui --- [INFO] Deleting C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.471s [INFO] Finished at: Mon Oct 21 12:34:33 MSK 2013 [INFO] Final Memory: 2M/90M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project ui: Failed to clean project: Failed to delete C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target\org.ow2.util.asm-asm-tree-3.1.jar -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Je dois fermer STS et aller à C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target
et supprimer org.ow2.util.asm-asm-tree-3.1.jar
Après avoir recommencé à utiliser STS, cela fonctionne, mais c’est embêtant.
Pouvez-vous m’aider avec ce problème?
METTRE À JOUR
pour Kalathoki L.
Je lance maven-clean
depuis cet état:
Je vois le même comportement depuis la ligne de commande que depuis le plugin eclipse
Si je regarde le déblocage lorsque STS est en cours d’exécution, je vois
:
Arrêtez votre serveur avant de commencer à nettoyer.
Arrêt d’un serveur
Vous pouvez arrêter le serveur à partir de la vue Serveurs.
Pour arrêter le serveur:
Si pour une raison quelconque le serveur ne parvient pas à s’arrêter, vous pouvez terminer le processus comme suit:
une. Passez à la perspective Débogage.
b. Dans la vue Processus, sélectionnez le processus serveur à arrêter.
c. Cliquez sur Terminate icône dans la barre d’outils.
Remarque: à la fin d’un serveur, le processus du serveur se termine et le serveur ne passe pas par la routine normale d’arrêt, par exemple en appelant la méthode destroy () sur un servlet.
Source: Aide Eclipse
Vous pouvez également essayer -Dmaven.clean.failOnError=false
(à partir de la FAQ Maven )
Votre problème est qu’un processus en cours d’exécution dans STS utilise des fichiers situés dans votre répertoire cible pendant que vous exécutez une commande mvn clean
. Maven ne sera pas en mesure de supprimer ces fichiers (d’autres processus y ayant toujours access) et échouera donc avec cette erreur.
Essayez d’arrêter tous les processus (tests, serveurs, applications) à partir de STS avant d’exécuter les commandes de la console Maven. Attention: ce comportement peut également apparaître si STS nettoie les projets et recomstack ainsi les sources sans exécuter de processus.
Résumé: Utilisez un script externe (fichier de commandes) qui arrête le serveur et déverrouille le fichier .jar avant d’exécuter maven-clean.
Pas:
Liez le plug-in maven-antrun: lancez l’objective jusqu’à la phase de pré-nettoyage de mvn clean. Voir comment faire ici
Voir comment utiliser le plug-in antrun pour exécuter un fichier de commandes externe dans Windows ici: la réponse de sblundy à “Lancer un processus externe” . Appelons ce fichier unlock_handles.bat
Utilisez le lien de téléchargement de l’ utilitaire de gestion Sysinternals dans le fichier pre_clean.bat pour a) arrêter le serveur Tomcat et b) déverrouiller le fichier .jar. handle -c
et handle -p
seraient utiles ici.
Ouf! C’est un peu de travail, mais cela automatisera de manière fiable le processus pour que vous ayez à le faire manuellement vous-même à chaque fois!
OK, voici une version de validation de concept de unlock_handles.bat que vous pouvez essayer:
REM "Use handle.exe to figure out the process id and handle ids, parse the output, then close the handle (again using handle.exe)" cd "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target" "c:/Program Files/Process Explorer/handle.exe" -p java.exe "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target" > handles.txt @echo "O====== Going to unlock all the below file handles! =======O" FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO @echo %h FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO handle -p %c -c %f -y
Bien sûr, vous devez changer le chemin d’access au handle.exe de Sysinternals avant d’essayer.
Il existe probablement de nombreux processus qui utilisent des sources compilées, par exemple un serveur, une ancienne instruction maven ou un IDE. Bien sûr, terminez tous les processus, arrêtez le serveur et exécutez à nouveau maven. Si le problème persiste, vous devez fermer le processus java.exe.
Cordialement!
Supprimez le processus java.exe dans le Gestionnaire des tâches et exécutez mvn clean install.Il a fonctionné pour moi.
Essayez de désactiver Project-> Build Automatically.
Comme Scorpio l’a suggéré, il existe un processus qui a un verrou sur un fichier quelque part.
J’ai un grand projet de multi-module maven qui échoue régulièrement sur clean et ceci le résout pour moi. Je ré-active Build automatiquement quand j’ai fini.
J’ai le même problème et ceci
mvn clean install -U
La commande a corrigé l’erreur.
Fermez le dossier cible et son fichier que vous avez ouvert avant de nettoyer mvn
Pour les utilisateurs Linux: solution possible.
Une erreur de compilation due à “Echec de la suppression de
Corrigé: tapez la commande ll pour lister le fichier qui ne peut pas être supprimé, si le fichier a un access root, changez pour un utilisateur normal par:
sudo chown -R nom-utilisateur: nom-fichier nom-utilisateur
Plus tard, essayez de nettoyer et construire Maven.
J’ai eu un problème similaire. Plus tôt, j’utilisais Maven 3 pour construire le projet. Après avoir basculé sur maven 2, j’ai eu l’erreur ci-dessus.
Résolu en passant à Maven 3.
Si vous verrouillez org.ow2.util.asm-asm-tree-3.1.jar
et démarrez eclipse, la journalisation indique qui n’a pas pu verrouiller le fichier. La même ligne de code qui ne peut pas verrouiller le fichier ne libère pas le verrou.
En phase de pré-nettoyage, j’exécute avec le programme Maven Unlocker. Ce programme déverrouille tous les fichiers et répertoires pour n’importe quel programme.
Je l’exécute avec maven-antrun-plugin et seulement dans les systèmes Windows
windows maven-antrun-plugin 1.8 pre-clean run
Maven se plaint si vous ne disposez pas d’permissions d’administrateur sur le dossier cible. Vérifiez si vous disposez des droits d’administrateur pour supprimer ce dossier.
Si toutes les étapes (dans les réponses existantes) ne fonctionnent pas, fermez l’éclipse et ouvrez à nouveau l’éclipse.
J’ai résolu le mien en faisant:
Pour certaines raisons, cela a fonctionné pour moi. Bonne chance !!
J’ai eu ce problème en essayant d’appeler mvn clean install
après avoir envoyé un email à un collègue avec le .jar de / target via Microsoft Outlook.
J’ai dû fermer Microsoft Outlook pour appeler mvn clean install
.