diff --git a/main/Defaults.scala b/main/Defaults.scala index 5d7625ce8..aaa26e35d 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -1001,4 +1001,13 @@ trait BuildCommon def classpath: Classpath = Attributed blankSeq s } def toError(o: Option[String]): Unit = o foreach error + + def overrideConfigs(cs: Configuration*)(configurations: Seq[Configuration]): Seq[Configuration] = + { + val existingName = configurations.map(_.name).toSet + val newByName = cs.map(c => (c.name, c)).toMap + val overridden = configurations map { conf => newByName.getOrElse(conf.name, conf) } + val newConfigs = cs filter { c => !existingName(c.name) } + overridden ++ newConfigs + } } \ No newline at end of file diff --git a/main/Project.scala b/main/Project.scala index b3d0f69a6..1be09a931 100644 --- a/main/Project.scala +++ b/main/Project.scala @@ -52,6 +52,7 @@ sealed trait Project extends ProjectDefinition[ProjectReference] apply(id, base, aggregate = resolveRefs(aggregate), dependencies = resolveDeps(dependencies), delegates = resolveRefs(delegates), settings, configurations) } + def overrideConfigs(cs: Configuration*): Project = copy(configurations = Defaults.overrideConfigs(cs : _*)(configurations)) def dependsOn(deps: ClasspathDep[ProjectReference]*): Project = copy(dependencies = dependencies ++ deps) def delegateTo(from: ProjectReference*): Project = copy(delegates = delegates ++ from) def aggregate(refs: ProjectReference*): Project = copy(aggregate = (aggregate: Seq[ProjectReference]) ++ refs)