【问题标题】:Specifying rootProject in build.sbt在 build.sbt 中指定 rootProject
【发布时间】:2014-12-30 23:57:59
【问题描述】:

在我的 Build.scala 中,我有:

override def rootProject = Some(frontendProject)

我正在尝试转换为较新的 build.sbt 格式,但不知道这一行的等价物。使用build.sbt时如何设置sbt项目默认加载?

【问题讨论】:

  • 请显示,sbt 说什么。这到底是什么rootProject?可能您只想设置thisProject := project in file(...)thisProjectRef
  • rootProject 是 sbt 内置的概念,用于指定 sbt 在多项目构建中启动时切换到的项目

标签: sbt


【解决方案1】:

我仍然不确定我的理解是否正确,但你说的是多项目构建,所以我假设你想定义一个聚合子项目的根项目。这是你可以做到的(在你的根build.sbt):

lazy val root = project.in( file(".") ).aggregate(subProject1, subProject2)

lazy val subProject1 = project in file("subProject1")

lazy val subProject2 = project in file("subProject2")

请参阅sbt documentation 了解多项目。

那么如果你想将默认项目设置为在sbt启动时加载到子项目,除了你对这个SO question的回答,我可以建议

  • 使用sbt "project XXX" shell 命令运行sbt
  • 或将此行添加到您的build.sbt

    onLoad in Global := { Command.process("project XXX", _: State) } compose (onLoad in Global).value

在这两种情况下,sbt 先加载根项目,然后加载子项目。

【讨论】:

  • 您指出的另一个 SO 问题是我回答的问题 :-) 虽然我可能应该更新答案,因为我找到了一种更好的方法来设置默认项目以在 sbt 启动时加载,即我在这里指的是什么。除了我不确定如何让它在 build.sbt 中工作
  • 哦,对不起,我没注意到是你。好的,所以我找不到任何方法在build.sbt 中覆盖这个rootProject,但除了你的旧解决方案之外,我还可以提出两种解决方案——我将它们添加到我的答案中。
【解决方案2】:

我发现以下脚本很有帮助:

#!/usr/bin/env bash

exec "sbt" "project mysubproject" "shell"
exit $?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2017-05-12
    • 2015-02-13
    相关资源
    最近更新 更多