在sbt multi项目构建中使用已部署的工件而不是本地项目

时间:2015-01-28 05:41:47

标签: scala sbt multi-project

我有一个sbt多项目构建

lazy val a = project

lazy val b = project.dependsOn(a)

我一直在研究a和b。有时我想在不发布新版本的情况下发布新版本的b。当然这要求b仍然与最后发布的a兼容。我该如何轻松测试?当我在b中编译并运行测试时,它将使用我的本地源代码a,但这通常已经改变。相反,我想编译和测试b最后发布的工件。我基本上需要能够暂时覆盖行为。任何想法:)?

1 个答案:

答案 0 :(得分:2)

这是一种打破所有项目间依赖关系的机制:

val useExternalDeps = settingKey[Boolean]("If true, we don't use inter-project dependencies")

lazy val a = project
lazy val b = project.dependsOn(a).settings(
   useExternalDeps := false,
   fullResolvers := {
      if(!useExternalDeps.value) fullResolvers.value
      else fullResolvers.value.filterNot(_.name == "inter-project")
   }
)

只需在sbt shell中调用set useExternalDeps := true,然后Ivy / sbt将停止查看工件的项目。