maven… Failed to clean project: Failed to delete ..\org.ow2.util.asm-asm-tree-3.1.jar

后端 未结 20 1705
臣服心动
臣服心动 2020-12-24 10:02

I use STS(spring tool suite) + maven plugin.

Every time when I run my application using maven-clean I see following error:

[INFO] Scanni         


        
相关标签:
20条回答
  • 2020-12-24 10:52

    Close the target folder and its file you have opened before mvn clean

    0 讨论(0)
  • 2020-12-24 10:53

    Summary : Use an external script (batch file) that a) stops the server and b) Unlocks the .jar file before running maven-clean.

    Steps:

    1. Bind the maven-antrun-plugin:run goal to the pre-clean phase of mvn clean. See how to do this here

    2. See how to use the antrun plugin to run an external batch file in Windows here : sblundy's answer to "Starting external process". Let's call this file unlock_handles.bat

    3. Use the Sysinternals handle utility download link in the pre_clean.bat to a) stop the Tomcat server and b) unlock the .jar file. handle -c and handle -p would be useful here.

    Whew! That's a bit of work, but it will reliably automate the process for you so that you do need to do it manually yourself each time!


    OK, here's a rough, proof-of-concept version of unlock_handles.bat for you to try out:

    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
    

    Of course, you have to change the path to Sysinternals' handle.exe before giving this a try.

    0 讨论(0)
  • 2020-12-24 10:54

    Stop your server before you start to clean.

    Stopping a server

    You can stop the server from the Servers view.

    To stop the server:

    1. In the Servers view ( Window > Show View > Other > Server > Servers > OK), select the server that you want to stop.
    2. Click the Stop the server this icon in the toolbar. In the Servers view, the status of the server changes to Stopped.
    3. If for some reason the server fails to stop, you can terminate the process as follows:

      a. Switch to the Debug perspective.

      b. In the Process view, select the server process that you want to stop.

      c. Click the Terminate This is an image of the Terminate icon in the toolbar.

    Note: When terminating a server, the server process will end and the server will not go through the normal routine of stopping, for example calling the destroy() method on a servlet.

    Source: Eclipse Help

    0 讨论(0)
  • 2020-12-24 10:55

    Your problem is that a running process within STS is using files located in your target directory while you execute a mvn clean command. Maven will be unable to delete these files (since other processes are still accessing them) and thus fail with that error.

    Try to stop all processes (tests, servers, applications) from within STS before running Maven console commands. Look out: This behaviour might also appear if STS is cleaning up the projects and thus re-compiles the sources, and not running a process.

    0 讨论(0)
  • 2020-12-24 10:55

    I have same problem and this

    mvn clean install -U
    

    command fixed the error.

    0 讨论(0)
  • 2020-12-24 10:56

    If you lock org.ow2.util.asm-asm-tree-3.1.jar and start eclipse, the logging shows who was unable to lock the file. The same codeline who cant lock the file will not release the lock.

    0 讨论(0)
提交回复
热议问题