Modified SBT defualts to pull in app repositories.

* If SBT launcher supports app repositories these are added by default.
* IF SBT launcher does not support app repositories, previous defaults are used.
This commit is contained in:
Josh Suereth 2012-12-04 11:32:45 -05:00 committed by Mark Harrah
parent 4210936163
commit f338018bd1
2 changed files with 11 additions and 3 deletions

View File

@ -828,10 +828,12 @@ object Classpaths
scmInfo in GlobalScope :== None,
projectInfo <<= (name, description, homepage, startYear, licenses, organizationName, organizationHomepage, scmInfo) apply ModuleInfo,
overrideBuildResolvers <<= appConfiguration(isOverrideRepositories),
externalResolvers <<= (externalResolvers.task.?, resolvers) {
case (Some(delegated), Seq()) => delegated
case (_, rs) => task { Resolver.withDefaultResolvers(rs) }
externalResolvers <<= (externalResolvers.task.?, resolvers, appResolvers) {
case (Some(delegated), Seq(), _) => delegated
case (_, rs, Some(ars)) => task { ars ++ rs } // TODO - Do we need to filter out duplicates?
case (_, rs, _) => task { Resolver.withDefaultResolvers(rs) }
},
appResolvers <<= appConfiguration apply appRepositories,
bootResolvers <<= appConfiguration map bootRepositories,
fullResolvers <<= (projectResolver,externalResolvers,sbtPlugin,sbtResolver,bootResolvers,overrideBuildResolvers) map { (proj,rs,isPlugin,sbtr, boot, overrideFlag) =>
boot match {
@ -1254,6 +1256,11 @@ object Classpaths
try app.provider.scalaProvider.launcher.isOverrideRepositories
catch { case _: NoSuchMethodError => false }
/** Loads the `appRepositories` configured for this launcher, if supported. */
def appRepositories(app: xsbti.AppConfiguration): Option[Seq[Resolver]] =
try { Some(app.provider.scalaProvider.launcher.appRepositories.toSeq map bootRepository) }
catch { case _: NoSuchMethodError => None }
def bootRepositories(app: xsbti.AppConfiguration): Option[Seq[Resolver]] =
try { Some(app.provider.scalaProvider.launcher.ivyRepositories.toSeq map bootRepository) }
catch { case _: NoSuchMethodError => None }

View File

@ -276,6 +276,7 @@ object Keys
val projectID = SettingKey[ModuleID]("project-id", "The dependency management descriptor for the current module.", BMinusSetting)
val overrideBuildResolvers = SettingKey[Boolean]("override-build-resolvers", "Whether or not all the build resolvers should be overriden with what's defined from the launcher.", BMinusSetting)
val bootResolvers = TaskKey[Option[Seq[Resolver]]]("boot-resolvers", "The resolvers used by the sbt launcher.", BMinusSetting)
val appResolvers = SettingKey[Option[Seq[Resolver]]]("app-resolvers", "The resolvers configured for this application by the sbt launcher.", BMinusSetting)
val externalResolvers = TaskKey[Seq[Resolver]]("external-resolvers", "The external resolvers for automatically managed dependencies.", BMinusSetting)
val resolvers = SettingKey[Seq[Resolver]]("resolvers", "The user-defined additional resolvers for automatically managed dependencies.", BMinusTask)
val projectResolver = TaskKey[Resolver]("project-resolver", "Resolver that handles inter-project dependencies.", DTask)