From 8c0f13a24ae90c42ae8aed47bef42d68b160672f Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 26 Apr 2019 17:51:17 -0400 Subject: [PATCH] manually expand ivy.home Ref coursier/coursier#1124 --- .../CoursierRepositoriesTasks.scala | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala b/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala index bccf63fe6..4e6f535d7 100644 --- a/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala +++ b/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala @@ -12,6 +12,7 @@ package librarymanagement import sbt.librarymanagement._ import sbt.Keys._ import sbt.ScopeFilter.Make._ +import sbt.io.IO private[sbt] object CoursierRepositoriesTasks { private object CResolvers { @@ -80,20 +81,38 @@ private[sbt] object CoursierRepositoriesTasks { val overrideFlag = overrideBuildResolvers.value Def.task { - val result = resultTask(bootResOpt, overrideFlag).value + val result0 = resultTask(bootResOpt, overrideFlag).value val reorderResolvers = true // coursierReorderResolvers.value val keepPreloaded = true // coursierKeepPreloaded.value - val result0 = - if (reorderResolvers) - CResolvers.reorderResolvers(result) - else - result + val paths = ivyPaths.value + val result1 = + if (reorderResolvers) CResolvers.reorderResolvers(result0) + else result0 + val result2 = + paths.ivyHome match { + case Some(ivyHome) => + val ivyHomeUri = IO.toURI(ivyHome).getSchemeSpecificPart + result1 map { + case r: FileRepository => + val ivyPatterns = r.patterns.ivyPatterns map { + _.replaceAllLiterally("$" + "{ivy.home}", ivyHomeUri) + } + val artifactPatterns = r.patterns.artifactPatterns map { + _.replaceAllLiterally("$" + "{ivy.home}", ivyHomeUri) + } + val p = + r.patterns.withIvyPatterns(ivyPatterns).withArtifactPatterns(artifactPatterns) + r.withPatterns(p) + case r => r + } + case _ => result1 + } if (keepPreloaded) - result0 + result2 else - result0.filter { r => + result2.filter { r => !r.name.startsWith("local-preloaded") } }