如何将设置附加到 sbt 项目?

Posted

技术标签:

【中文标题】如何将设置附加到 sbt 项目?【英文标题】:How to append settings to a sbt project? 【发布时间】:2018-03-23 10:25:58 【问题描述】:

我有这样的build.sbt 文件:

./build.sbt

lazy val root = (project in file(".")
  .settings(libraryDependencies ++= Seq(...))

还有第二个文件(在同一个文件夹中),如下所示:

./release.sbt

lazy val releaseStuff: Def.Setting[Task[Unit]] = DockerSbtPlugin.releaseStuff
lazy val root = (project in file(".").settings(releaseStuff)

但是releaseStuff这个命令无法识别,我明白了:

sbt:sitemap> releaseStuff
[error] Not a valid key: releaseStuff (similar: releasePuff, releaseCough)
[error] releaseStuff
[error]             ^

我做错了吗?

请注意,releaseStuff 依赖于一个插件,因此如果放在 project 文件夹中,它不会编译。

【问题讨论】:

【参考方案1】:

我不知道release.sbt 是什么,但您可以在project 文件夹中配置releaseStuff。您只需要显式导入适用的插件包。

例如,当我想为 docker 使用 native-packager 时,我创建了一个 project/docker.scala 文件

import sbt._
import Keys._
import com.typesafe.sbt.packager.docker._
import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport._

object Docker 
  lazy val settings = Seq(
    ...
  )

并从build.sbt 包含它

lazy val root = (project in file(".")
  .settings(
    name := "widget",
    Docker.settings
  )
)

【讨论】:

2018 年更新:lazy val root = (project in file(".")) .settings( name := "widget", Docker.settings )

以上是关于如何将设置附加到 sbt 项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 sbt package 命令将哈希附加到 jar 的名称

如何将 PostgreSQL 卷附加到使用 SBT 本机打包程序生成的 Docker 映像?

如何在 sbt 中的测试任务之前附加自定义任务以执行?

如何使用 Eclipse 调试由 sbt 驱动的测试?

困惑如何设置多项目 sbt 项目

如何设置 sbt/scala/play 多模块项目,该项目将与 Intellij scala 插件一起正常工作