J'utilise STS (Spring Tool Suite) + plugin maven.
Chaque fois que j'exécute mon application en utilisant maven-clean
, l'erreur suivante apparaît:
[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 le redémarrage de STS, cela fonctionne, mais c’est un problème.
Pouvez-vous m'aider avec ce problème?
METTRE À JOUR
.__ pour Kalathoki L.
Je lance maven-clean
à partir de cet état:
Je vois le même comportement depuis la ligne de commande que depuis le plugin Eclipse
Si je regarde déverrouiller lorsque STS est en cours d'exécution, je vois
:
Arrêtez votre serveur avant de commencer à nettoyer.
Arrêter 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 arrêter le processus De la manière suivante:
une. Basculez vers la perspective de débogage.
b. Dans la vue Processus, sélectionnez le processus serveur que vous souhaitez arrêter.
c. Cliquez sur Terminate Icône dans la barre d’outils.
Remarque: Lors de la fermeture d'un serveur, le processus serveur prend fin et le serveur ne subit pas la routine normale d'arrêt, par exemple en appelant la méthode destroy () sur un servlet.
Source: Aide Eclipse
Vous pouvez également essayer essayer -Dmaven.clean.failOnError=false
(From Maven FAQ )
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 l'exécution d'une commande mvn clean
. Maven ne pourra pas supprimer ces fichiers (car d'autres processus y ont encore accès) et échouera donc avec cette erreur.
Essayez d’arrêter tous les processus (tests, serveurs, applications) depuis STS avant d’exécuter les commandes de la console Maven. Attention: Ce comportement peut également apparaître si STS nettoie les projets et recompile donc les sources sans exécuter de processus.
Il existe probablement de nombreux processus utilisant des sources compilées, par exemple un serveur, une ancienne instruction Maven ou un environnement de développement intégré. Terminez tous les processus, arrêtez le serveur, puis 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.
Résumé: Utilisez un script externe (fichier de traitement par lots) qui a) arrête le serveur et b) déverrouille le fichier .jar avant d'exécuter maven-clean.
Pas:
Liez le plugin maven-antrun-plug: but à la phase de pré-nettoyage de mvn clean. Voir comment faire cela ici
Voyez comment utiliser le plugin antrun pour exécuter un fichier de traitement par lots externe sous Windows ici: Réponse de sblondy à "Démarrer un processus externe" . Appelons ce fichier unlock_handles.bat
Utilisez l'utilitaire Sysinternals handledownload link 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 du travail, mais cela automatisera le processus de manière fiable pour que vous ayez à le faire manuellement vous-même à chaque fois!
OK, voici une version brute 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'accès à handle.exe de Sysinternals avant de l'essayer.
J'ai le même problème et cela
mvn clean install -U
la commande a corrigé l'erreur.
Fermez le dossier cible et son fichier que vous avez ouvert avant mvn clean
Essayez de désactiver Projet-> Construire automatiquement.
Comme Scorpio l'a suggéré, il existe un processus en cours qui verrouille un fichier quelque part.
J'ai un grand projet multi-modules Maven qui échoue régulièrement en mode minimal et cela le résout pour moi. Je réactive la création automatique lorsque j'ai terminé.
J'ai résolu le mien en faisant:
Pour certaines raisons, cela a fonctionné pour moi. Bonne chance !!
J'ai eu le même problème. Auparavant, j'utilisais Maven 3 pour construire le projet. Après être passé à Maven 2, j'ai eu l'erreur ci-dessus.
Résolu en passant à Maven 3.
Pour les utilisateurs de Linux: solution possible.
Erreur de construction en raison de "Echec de la suppression <any-file-or-folder>" se produira s'il existe par hasard un accès uniquement à la suppression fourni à root user plutôt qu'à normal-user .
Correction: tapez ll commande pour lister le fichier qui ne peut pas être supprimé, si le fichier a un accès root, passez à l'utilisateur normal comme suit:
Sudo chown -R nom d'utilisateur: nom d'utilisateur nom de fichier
Plus tard, essayez Maven nettoyer et construire.
Si toutes les étapes (dans les réponses existantes) ne fonctionnent pas, fermez simplement Eclipse et ouvrez à nouveau Eclipse.
En phase de pré-nettoyage, j'exécute avec le programme Maven Unlocker. Ce programme déverrouille tous les fichiers et répertoires pour tout programme.
J'exécute cela avec maven-antrun-plugin et uniquement dans les systèmes Windows
<profile>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>pre-clean</phase>
<configuration>
<tasks>
<exec dir="${project.build.directory}" executable="cmd" failonerror="false">
<arg value="Unlocker.exe" />
<arg value="/S" />
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
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 lâche pas le verrou.
Veuillez fermer tous les onglets du navigateur. Et la prochaine fois que vous essayez de télécharger war à partir d'un autre endroit que le dossier cible.