Ich benutze STS (Spring Tool Suite) + Maven-Plugin.
Jedes Mal, wenn ich meine Anwendung mit maven-clean
starte, sehe ich folgenden Fehler:
[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
Ich muss STS schließen und zu C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target
gehen und org.ow2.util.asm-asm-tree-3.1.jar
löschen.
Nach dem erneuten Starten von STS funktioniert es, aber dies ist umständlich.
Kannst du mir bei diesem Problem helfen?
UPDATE
für Kalathoki L.
Ich führe maven-clean
von diesem Status aus:
Ich sehe in der Befehlszeile dasselbe Verhalten wie im Eclipse-Plugin
Wenn ich Unlocker anschaue, während STS läuft, sehe ich
:
Stoppen Sie Ihren Server, bevor Sie mit der Reinigung beginnen.
Stoppen eines Servers
Sie können den Server in der Serveransicht stoppen.
So stoppen Sie den Server:
Wenn der Server aus irgendeinem Grund nicht angehalten werden kann, können Sie den -Prozess wie folgt beenden:
ein. Wechseln Sie in die Debug-Perspektive.
b. Wählen Sie in der Prozessansicht den Serverprozess aus, den Sie stoppen möchten.
c. Klicken Sie auf das Terminate Symbol in der Symbolleiste.
Hinweis: Wenn Sie einen Server beenden, wird der Serverprozess beendet und der Server durchläuft nicht die normale Routine des Anhaltens, beispielsweise den Aufruf der destroy () - Methode für ein Servlet.
Quelle: Eclipse-Hilfe
Versuchen Sie es auch mit -Dmaven.clean.failOnError=false
(Von Maven FAQ ).
Ihr Problem ist, dass ein laufender Prozess innerhalb von STS Dateien verwendet, die sich in Ihrem Zielverzeichnis befinden, während Sie einen mvn clean
-Befehl ausführen. Maven kann diese Dateien nicht löschen (da andere Prozesse noch darauf zugreifen) und daher mit diesem Fehler fehlschlagen.
Versuchen Sie, alle Prozesse (Tests, Server, Anwendungen) in STS zu stoppen, bevor Sie die Maven-Konsolenbefehle ausführen. Achtung: Dieses Verhalten kann auch auftreten, wenn STS die Projekte bereinigt und somit die Quellen neu kompiliert und keinen Prozess ausführt.
Wahrscheinlich gibt es viele Prozesse, die kompilierte Quellen verwenden, beispielsweise ein Server, eine alte Maven-Anweisung oder eine IDE. Beenden Sie sicher alle Prozesse, stoppen Sie den Server und führen Sie dann erneut Maven aus. Wenn das Problem weiterhin besteht, sollten Sie den Prozess Java.exe schließen.
Grüße!
Löschen Sie den Java.exe-Prozess im Task-Manager und führen Sie mvn clean install aus. Das hat für mich funktioniert.
Summary: Verwenden Sie ein externes Skript (Batch-Datei), das a) den Server stoppt und b) die .jar-Datei vor dem Ausführen von maven-clean entsperrt.
Schritte:
Binden Sie das Maven-Antrun-Plugin: Führen Sie das Ziel zur Vorreinigungsphase von mvn clean. Sehen Sie, wie das geht hier
Hier erfahren Sie, wie Sie mit dem antrun-Plugin eine externe Batchdatei in Windows ausführen: die Antwort von sblundy auf "Externen Prozess starten" . Nennen wir diese Datei unlock_handles.bat
.
Verwenden Sie das Sysinternals-Handle -Dienstprogramm Downloadlink in der Datei pre_clean.bat, um a) den Tomcat-Server zu stoppen und b) die .jar-Datei zu entsperren. handle -c
und handle -p
wäre hier hilfreich.
Wütend! Das ist zwar ein bisschen Arbeit, aber es wird den Prozess für Sie zuverlässig automatisieren, so dass Sie es jedes Mal manuell durchführen müssen!
OK, hier ist eine grobe Proof-of-Concept-Version von unlock_handles.bat, die Sie ausprobieren können:
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
Natürlich müssen Sie den Pfad zu Sysinternals handle.exe ändern, bevor Sie es versuchen.
Ich habe das gleiche Problem und dieses
mvn clean install -U
befehl behoben den Fehler.
Schließen Sie den Zielordner und die Datei, die Sie vor der mvn clean geöffnet haben
Deaktivieren Sie die Option Projekt-> Automatisch erstellen.
Wie Scorpio vorschlug, gibt es einen Prozess, der irgendwo eine Datei sperrt.
Ich habe ein großes Multi-Modul-Maven-Projekt, das regelmäßig beim Reinigen fehlschlägt und das löst es für mich. Wenn ich fertig bin, aktiviere ich automatisch wieder.
Ich löste meine, indem ich Folgendes tat:
Aus einigen Gründen hat es für mich funktioniert. Viel Glück !!
Ich hatte ein ähnliches Problem. Früher habe ich Maven 3 verwendet, um das Projekt zu erstellen. Nach dem Umstieg auf Maven 2 hatte ich den oben genannten Fehler.
Gelöst durch Umstellung auf Maven 3.
Für Linux-Benutzer: Mögliche Lösung.
Erstellungsfehler aufgrund von "Fehler beim Löschen von Dateien oder Ordnern>" tritt auf, wenn nur der Löschzugriff für root user statt für normal-user verfügbar ist. .
Fix: Geben Sie ll Befehl ein, um eine Datei aufzulisten, die nicht gelöscht werden kann. Wenn der Datei Root-Zugriff gewährt wird, wechseln Sie zum normalen Benutzer:
Sudo chown -R Benutzername: Benutzername Dateiname
Versuchen Sie es später mit Maven Clean und Build.
Wenn alle Schritte (in vorhandenen Antworten) nicht funktionieren, schließen Sie einfach Eclipse und öffnen Sie Eclipse erneut.
In der Vorreinigungsphase werde ich mit dem Maven Unlocker-Programm ausgeführt. Dieses Programm entsperrt alle Dateien und Verzeichnisse für alle Programme.
Ich führe das mit maven-antrun-plugin und nur in Windows-Systemen aus
<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>
Wenn Sie org.ow2.util.asm-asm-tree-3.1.jar
sperren und Eclipse starten, zeigt die Protokollierung an, wer die Datei nicht sperren konnte. Dieselbe Codeline, die die Datei nicht sperren kann, gibt die Sperre nicht frei.
Bitte schließen Sie alle Browser-Tabs. Und das nächste Mal, wenn Sie versuchen, Krieg von einem anderen Ort als dem Zielordner hochzuladen.