diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 888d42cdb..1273a3337 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1722,10 +1722,18 @@ object Defaults extends BuildCommon { def packageBinMappings: Initialize[Task[Seq[(HashedVirtualFileRef, String)]]] = Def.task { val converter = fileConverter.value + val classDirPath = classDirectory.value.toPath.toAbsolutePath.normalize val xs = products.value - xs + val allMappings = xs .flatMap(Path.allSubpaths) - .withFilter(_._1.isFile()) + .filter(_._1.isFile()) + val resourcePaths = allMappings.collect { + case (p, path) if !p.toPath.toAbsolutePath.normalize.startsWith(classDirPath) => path + }.toSet + allMappings + .filterNot { (p, path) => + resourcePaths(path) && p.toPath.toAbsolutePath.normalize.startsWith(classDirPath) + } .map { (p, path) => val vf = converter.toVirtualFile(p.toPath()) (vf: HashedVirtualFileRef) -> path diff --git a/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/build.sbt b/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/build.sbt new file mode 100644 index 000000000..40734b4c1 --- /dev/null +++ b/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/build.sbt @@ -0,0 +1,4 @@ +ThisBuild / organization := "com.example" +ThisBuild / version := "0.1.0-SNAPSHOT" + +val `scalac-options` = project.enablePlugins(SbtPlugin) diff --git a/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/scalac-options/src/main/scala/example/ScalacOptionsPlugin.scala b/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/scalac-options/src/main/scala/example/ScalacOptionsPlugin.scala new file mode 100644 index 000000000..3d8f9eae2 --- /dev/null +++ b/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/scalac-options/src/main/scala/example/ScalacOptionsPlugin.scala @@ -0,0 +1,5 @@ +package example + +import sbt.* + +object ScalacOptionsPlugin extends AutoPlugin diff --git a/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/test b/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/test new file mode 100644 index 000000000..e00f9cbb0 --- /dev/null +++ b/sbt-app/src/sbt-test/plugins/duplicate-autoplugins-packagebin/test @@ -0,0 +1,3 @@ +> scalac-options / Compile / packageBin +> scalac-options / Compile / copyResources +> scalac-options / Compile / packageBin