Index: java/org/apache/ivy/plugins/lock/DeleteOnExitHook.java =================================================================== --- java/org/apache/ivy/plugins/lock/DeleteOnExitHook.java (revision 0) +++ java/org/apache/ivy/plugins/lock/DeleteOnExitHook.java (working copy) @@ -0,0 +1,38 @@ +package org.apache.ivy.plugins.lock; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashSet; + +class DeleteOnExitHook{ + static { + Runtime.getRuntime().addShutdownHook(new Thread() { + public void run() { + runHook(); + } + }); + } + + private static LinkedHashSet files = new LinkedHashSet(); + + private DeleteOnExitHook() {} + + static synchronized void add(File file) { + files.add(file); + } + + static synchronized void remove(File file) { + files.remove(file); + } + + static void runHook() { + Iterator itr = files.iterator(); + while (itr.hasNext()) { + ((File)itr.next()).delete(); + itr.remove(); + } + + } +} \ No newline at end of file Index: java/org/apache/ivy/plugins/lock/FileBasedLockStrategy.java =================================================================== --- java/org/apache/ivy/plugins/lock/FileBasedLockStrategy.java (revision 1407365) +++ java/org/apache/ivy/plugins/lock/FileBasedLockStrategy.java (working copy) @@ -150,6 +150,7 @@ try { if (file.getParentFile().exists() || file.getParentFile().mkdirs()) { if (file.createNewFile()) { + DeleteOnExitHook.add(file); return true; } else { if (debugLocking) { @@ -167,6 +168,7 @@ public void unlock(File file) { file.delete(); + DeleteOnExitHook.remove(file); } } /**