mirror of https://github.com/sbt/sbt.git
Filter out preloaded repos by default
These sometimes have POMs without the corresponding JARs for some dependencies, which coursier doesn't allow for now (if a repo has POMs, it must the corresponding JARs). Plus preloaded stuff aren't that useful with sbt-coursier enabled.
This commit is contained in:
parent
ca5ac162f2
commit
ef669e68e4
|
|
@ -18,6 +18,7 @@ object CoursierPlugin extends AutoPlugin {
|
|||
val coursierArtifactsChecksums = Keys.coursierArtifactsChecksums
|
||||
val coursierCachePolicies = Keys.coursierCachePolicies
|
||||
val coursierTtl = Keys.coursierTtl
|
||||
val coursierKeepPreloaded = Keys.coursierKeepPreloaded
|
||||
val coursierVerbosity = Keys.coursierVerbosity
|
||||
val mavenProfiles = Keys.mavenProfiles
|
||||
val coursierResolvers = Keys.coursierResolvers
|
||||
|
|
@ -138,6 +139,11 @@ object CoursierPlugin extends AutoPlugin {
|
|||
}
|
||||
)
|
||||
|
||||
private val preloadedBase = {
|
||||
val rawPattern = "file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}"
|
||||
Tasks.exceptionPatternParser().apply(rawPattern).string
|
||||
}
|
||||
|
||||
def coursierSettings(
|
||||
shadedConfigOpt: Option[(String, String)],
|
||||
packageConfigs: Seq[(Configuration, String)]
|
||||
|
|
@ -162,10 +168,18 @@ object CoursierPlugin extends AutoPlugin {
|
|||
case _ => false
|
||||
}
|
||||
|
||||
if (pluginIvySnapshotsFound && !resolvers.contains(Classpaths.sbtPluginReleases))
|
||||
resolvers :+ Classpaths.sbtPluginReleases
|
||||
val resolvers0 =
|
||||
if (pluginIvySnapshotsFound && !resolvers.contains(Classpaths.sbtPluginReleases))
|
||||
resolvers :+ Classpaths.sbtPluginReleases
|
||||
else
|
||||
resolvers
|
||||
|
||||
if (coursierKeepPreloaded.value)
|
||||
resolvers0
|
||||
else
|
||||
resolvers
|
||||
resolvers0.filter { r =>
|
||||
!r.name.startsWith("local-preloaded")
|
||||
}
|
||||
},
|
||||
coursierFallbackDependencies := Tasks.coursierFallbackDependenciesTask.value,
|
||||
coursierArtifacts := Tasks.artifactFilesOrErrors(withClassifiers = false).value,
|
||||
|
|
@ -275,7 +289,8 @@ object CoursierPlugin extends AutoPlugin {
|
|||
coursierUseSbtCredentials := true,
|
||||
coursierCredentials := Map.empty,
|
||||
coursierCache := Cache.default,
|
||||
coursierReorderResolvers := true
|
||||
coursierReorderResolvers := true,
|
||||
coursierKeepPreloaded := false
|
||||
)
|
||||
|
||||
override lazy val projectSettings = coursierSettings(None, Seq(Compile, Test).map(c => c -> c.name)) ++
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ object Keys {
|
|||
val coursierArtifactsChecksums = SettingKey[Seq[Option[String]]]("coursier-artifacts-checksums")
|
||||
val coursierCachePolicies = SettingKey[Seq[CachePolicy]]("coursier-cache-policies")
|
||||
val coursierTtl = SettingKey[Option[Duration]]("coursier-ttl")
|
||||
val coursierKeepPreloaded = SettingKey[Boolean]("coursier-keep-preloaded", "Whether to take into account sbt preloaded repositories or not")
|
||||
|
||||
val coursierVerbosity = SettingKey[Int]("coursier-verbosity")
|
||||
|
||||
|
|
|
|||
|
|
@ -99,12 +99,21 @@ object Tasks {
|
|||
Def.task {
|
||||
val result = resultTask.value
|
||||
val reorderResolvers = coursierReorderResolvers.value
|
||||
val keepPreloaded = coursierKeepPreloaded.value
|
||||
|
||||
if (reorderResolvers && result.exists(fastRepo) && result.exists(slowRepo)) {
|
||||
val (slow, other) = result.partition(slowRepo)
|
||||
other ++ slow
|
||||
} else
|
||||
result
|
||||
val result0 =
|
||||
if (reorderResolvers && result.exists(fastRepo) && result.exists(slowRepo)) {
|
||||
val (slow, other) = result.partition(slowRepo)
|
||||
other ++ slow
|
||||
} else
|
||||
result
|
||||
|
||||
if (keepPreloaded)
|
||||
result0
|
||||
else
|
||||
result0.filter { r =>
|
||||
!r.name.startsWith("local-preloaded")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -423,7 +432,7 @@ object Tasks {
|
|||
|
||||
private def createLogger() = new TermDisplay(new OutputStreamWriter(System.err))
|
||||
|
||||
private def globalPluginPatterns(sbtVersion: String): Seq[coursier.ivy.Pattern] = {
|
||||
private[coursier] def exceptionPatternParser(): String => coursier.ivy.Pattern = {
|
||||
|
||||
val props = sys.props.toMap
|
||||
|
||||
|
|
@ -438,21 +447,25 @@ object Tasks {
|
|||
addUriProp("sbt.global.base")
|
||||
addUriProp("user.home")
|
||||
|
||||
def pattern(s: String): coursier.ivy.Pattern = {
|
||||
val p = PropertiesPattern.parse(s) match {
|
||||
case -\/(err) =>
|
||||
throw new Exception(s"Cannot parse pattern $s: $err")
|
||||
case \/-(p) =>
|
||||
p
|
||||
}
|
||||
{
|
||||
s =>
|
||||
val p = PropertiesPattern.parse(s) match {
|
||||
case -\/(err) =>
|
||||
throw new Exception(s"Cannot parse pattern $s: $err")
|
||||
case \/-(p) =>
|
||||
p
|
||||
}
|
||||
|
||||
p.substituteProperties(props ++ extraProps) match {
|
||||
case -\/(err) =>
|
||||
throw new Exception(err)
|
||||
case \/-(p) =>
|
||||
p
|
||||
}
|
||||
p.substituteProperties(props ++ extraProps) match {
|
||||
case -\/(err) =>
|
||||
throw new Exception(err)
|
||||
case \/-(p) =>
|
||||
p
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private def globalPluginPatterns(sbtVersion: String): Seq[coursier.ivy.Pattern] = {
|
||||
|
||||
// FIXME get the 0.13 automatically?
|
||||
val defaultRawPattern = s"$${sbt.global.base.uri-$${user.home.uri}/.sbt/$sbtVersion}/plugins/target" +
|
||||
|
|
@ -468,7 +481,7 @@ object Tasks {
|
|||
Seq(
|
||||
defaultRawPattern,
|
||||
extraRawPattern
|
||||
).map(pattern)
|
||||
).map(exceptionPatternParser())
|
||||
}
|
||||
|
||||
def parentProjectCacheTask: Def.Initialize[sbt.Task[Map[Seq[sbt.Resolver],Seq[coursier.ProjectCache]]]] =
|
||||
|
|
|
|||
Loading…
Reference in New Issue