diff --git a/main-actions/src/main/scala/sbt/Package.scala b/main-actions/src/main/scala/sbt/Package.scala index d1ca287b2..6afe000ee 100644 --- a/main-actions/src/main/scala/sbt/Package.scala +++ b/main-actions/src/main/scala/sbt/Package.scala @@ -94,8 +94,13 @@ object Package { ManifestAttributes((attribKeys zip attribVals) ++ { homepage map (h => (IMPLEMENTATION_URL, h.toString)) }: _*) } def makeJar(sources: Seq[(File, String)], jar: File, manifest: Manifest, log: Logger): Unit = { - log.info("Packaging " + jar.getAbsolutePath + " ...") - IO.delete(jar) + val path = jar.getAbsolutePath + log.info("Packaging " + path + " ...") + if (jar.exists) + if (jar.isFile) + IO.delete(jar) + else + sys.error(path + " exists, but is not a regular file") log.debug(sourcesDebugString(sources)) IO.jar(sources, jar, manifest) log.info("Done packaging.") diff --git a/sbt/src/sbt-test/actions/package-delete-target/build.sbt b/sbt/src/sbt-test/actions/package-delete-target/build.sbt new file mode 100644 index 000000000..521d0c6da --- /dev/null +++ b/sbt/src/sbt-test/actions/package-delete-target/build.sbt @@ -0,0 +1,5 @@ +lazy val root = (project in file(".")) + .settings( + name := "delete-target", + scalaVersion := "2.12.1" + ) diff --git a/sbt/src/sbt-test/actions/package-delete-target/test b/sbt/src/sbt-test/actions/package-delete-target/test new file mode 100644 index 000000000..a04dd25bd --- /dev/null +++ b/sbt/src/sbt-test/actions/package-delete-target/test @@ -0,0 +1,4 @@ +$ mkdir target/scala-2.12/delete-target_2.12-0.1-SNAPSHOT.jar +$ touch target/scala-2.12/delete-target_2.12-0.1-SNAPSHOT.jar/hello +-> package +$ exists target/scala-2.12/delete-target_2.12-0.1-SNAPSHOT.jar/hello