diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 591169545..00dec4d37 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -623,7 +623,7 @@ object Defaults extends BuildCommon { val dir = classDirectory.value converter.toVirtualFile(dir.toPath) }, - earlyOutput / artifactPath := earlyArtifactPathSetting(artifact).value, + earlyOutput / artifactPath := configArtifactPathSetting(artifact, "early").value, earlyOutput := { val converter = fileConverter.value val jar = (earlyOutput / artifactPath).value @@ -1591,10 +1591,30 @@ object Defaults extends BuildCommon { excludes: ScopedTaskable[FileFilter] ): Initialize[Task[Seq[File]]] = collectFiles(dirs: Taskable[Seq[File]], filter, excludes) - private[sbt] def earlyArtifactPathSetting(art: SettingKey[Artifact]): Initialize[File] = + private[sbt] def configArtifactPathSetting( + art: SettingKey[Artifact], + extraPrefix: String + ): Initialize[File] = Def.setting { val f = artifactName.value - crossTarget.value / "early" / f( + crossTarget.value / + (prefix(configuration.value.name) + extraPrefix) / f( + ScalaVersion( + (scalaVersion in artifactName).value, + (scalaBinaryVersion in artifactName).value + ), + projectID.value, + art.value + ) + } + + private[sbt] def prefixArtifactPathSetting( + art: SettingKey[Artifact], + extraPrefix: String + ): Initialize[File] = + Def.setting { + val f = artifactName.value + crossTarget.value / extraPrefix / f( ScalaVersion( (scalaVersion in artifactName).value, (scalaBinaryVersion in artifactName).value diff --git a/main/src/main/scala/sbt/internal/RemoteCache.scala b/main/src/main/scala/sbt/internal/RemoteCache.scala index cf758264e..a6f24cb81 100644 --- a/main/src/main/scala/sbt/internal/RemoteCache.scala +++ b/main/src/main/scala/sbt/internal/RemoteCache.scala @@ -128,11 +128,18 @@ object RemoteCache { }, remoteCachePom := { val s = streams.value - val config = makePomConfiguration.value + val config = (remoteCachePom / makePomConfiguration).value val publisher = Keys.publisher.value publisher.makePomFile((pushRemoteCache / ivyModule).value, config, s.log) config.file.get }, + remoteCachePom / artifactPath := { + Defaults.prefixArtifactPathSetting(makePom / artifact, "remote-cache").value + }, + remoteCachePom / makePomConfiguration := { + val config = makePomConfiguration.value + config.withFile((remoteCachePom / artifactPath).value) + }, remoteCachePom / remoteCacheArtifact := { PomRemoteCacheArtifact((makePom / artifact).value, remoteCachePom) }