【问题标题】:Use deployed artifacts instead of local project in sbt multi project build在 sbt 多项目构建中使用已部署的工件而不是本地项目
【发布时间】:2015-01-28 05:41:47
【问题描述】:

我有一个 sbt 多项目构建

lazy val a = project

lazy val b = project.dependsOn(a)

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

【问题讨论】:

  • 我在依赖项目上使用sbt publish-local,并在我的依赖项目上设置“标准”sbt依赖声明。

标签: scala sbt multi-project


【解决方案1】:

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

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 将停止在项目之间寻找工件。

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2021-05-28
    • 2015-03-11
    • 2021-05-28
    • 2014-08-05
    相关资源
    最近更新 更多