diff --git a/build.sbt b/build.sbt index d914961eb..479457989 100644 --- a/build.sbt +++ b/build.sbt @@ -15,7 +15,7 @@ inThisBuild(List( ) )) -val coursierVersion0 = "2.0.6" +val coursierVersion0 = "2.0.7" lazy val `lm-coursier` = project .in(file("modules/lm-coursier")) @@ -54,7 +54,8 @@ lazy val `lm-coursier-shaded` = project "argonaut", "org.fusesource", "macrocompat", - "io.github.alexarchambault.windowsansi" + "io.github.alexarchambault.windowsansi", + "concurrentrefhashmap" ) for (ns <- toShade) yield ShadingRule.moveUnder(ns, "lmcoursier.internal.shaded") diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala b/modules/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala index 5cf5466c4..73a52e596 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala @@ -1,10 +1,11 @@ package lmcoursier.internal -import coursier.ivy.IvyRepository import java.net.MalformedURLException +import java.nio.file.Paths import coursier.cache.CacheUrl import coursier.core.{Authentication, Repository} +import coursier.ivy.IvyRepository import coursier.maven.MavenRepository import org.apache.ivy.plugins.resolver.IBiblioResolver import sbt.librarymanagement.{Configuration => _, MavenRepository => _, _} @@ -54,7 +55,14 @@ object Resolvers { // this handles whitespace in path private def pathToUriString(path: String): String = { - "file://" + path.replaceAllLiterally(" ", "%20") + val stopAtIdx = path.indexWhere(c => c == '[' || c == '$' || c == '(') + if (stopAtIdx > 0) { + val (pathPart, patternPart) = path.splitAt(stopAtIdx) + Paths.get(pathPart).toUri.toASCIIString + patternPart + } else if (stopAtIdx == 0) + "file://" + path + else + Paths.get(path).toUri.toASCIIString } def repository(