我有一个sbt多项目构建
lazy val a = project
lazy val b = project.dependsOn(a)
我一直在研究a和b。有时我想在不发布新版本的情况下发布新版本的b。当然这要求b仍然与最后发布的a兼容。我该如何轻松测试?当我在b中编译并运行测试时,它将使用我的本地源代码a,但这通常已经改变。相反,我想编译和测试b最后发布的工件。我基本上需要能够暂时覆盖行为。任何想法:)?
答案 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将停止查看工件的项目。