From 04a5a01005440e8f32f6c88399e25bc7a40108d2 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 28 May 2013 11:08:49 -0400 Subject: [PATCH] Use publication date from metadata instead of original file's last modified time. Fixes #764. --- ivy/src/main/scala/sbt/Ivy.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ivy/src/main/scala/sbt/Ivy.scala b/ivy/src/main/scala/sbt/Ivy.scala index c99efc821..a938087fd 100644 --- a/ivy/src/main/scala/sbt/Ivy.scala +++ b/ivy/src/main/scala/sbt/Ivy.scala @@ -356,8 +356,11 @@ private object IvySbt // this is the locally cached metadata as originally retrieved (e.g. the pom) val original = rmr.getReport.getOriginalLocalFile if(original != null) { - // delete all files in subdirectories that are older than the original metadata file - val lm = original.lastModified + // delete all files in subdirectories that are older than the original metadata file's publication date + // The publication date is used because the metadata will be redownloaded for changing files, + // so the last modified time changes, but the publication date doesn't + val pubDate = rmrRaw.getPublicationDate + val lm = if(pubDate eq null) original.lastModified else pubDate.getTime val indirectFiles = PathFinder(original.getParentFile).*(DirectoryFilter).**(-DirectoryFilter).get.toList val older = indirectFiles.filter(f => f.lastModified < lm).toList Message.verbose("Deleting additional old artifacts from cache for changed module " + mrid + older.mkString(":\n\t", "\n\t", ""))