【问题标题】:How to set settings for a subproject in sbt shell (without using project command)?如何在 sbt shell 中设置子项目的设置(不使用项目命令)?
【发布时间】:2014-07-23 21:53:23
【问题描述】:

在 sbt shell 中如何设置子项目的设置?

我知道我可以project subproject 然后set key := value,但我不想一直切换项目。理想情况下与以下内容没有太大不同:

set key in subproject := value

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我认为问题在于您已经在build.sbt 中定义了您的项目,并且它们似乎在 sbt 控制台中不可见。至少在当前版本的 sbt 中 - 请参阅 this issue 和 this issue 实际上只是在几天前修复(!)

    我找到了两种方法来克服这个限制。

    在项目 id 周围使用引号

    set version in "projectId" := "some-version"
    

    在 project/Build.scala 文件中创建完整的构建定义

    使用以下构建定义文件build/Build.scala:

    import sbt._
    import Keys._
    
    object Build extends Build {
      lazy val projectA, projectB = project
    }
    

    您应该可以执行set version in projectA := "1.42-SNAPSHOT 并达到预期效果。

    此外,您可以只拥有包含项目定义的build/Build.scala,其余配置位于每个子模块的build.sbt。与set 配合使用会非常好。

    【讨论】:

    • 我不知道来自build.sbt 的项目在shell 中是不可见的!感谢您分享新闻。
    • @JacekLaskowski 如果我理解正确并且链接的问题就是这个,那么它似乎应该在下一个 sbt 版本中成为可能。
    • 没错!这就是为什么我没有在我的自定义 sbt 构建中看到它的原因 :) 查看我的更改。希望你不介意我的改变。
    • @JacekLaskowski 我学会了和他们一起生活;)。甚至那些从方法调用中删除. 的人;)。但老实说 - 有价值的变化总是对社区有益,所以谢谢! :)
    • 我可能会再次开始使用.,它可以提高理解并帮助 Scala 类型推理器。
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2014-06-05
    • 1970-01-01
    • 2020-06-08
    • 2019-01-02
    • 2013-03-31
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多