将 Scala 中的模块项目设置为 sbt 项目?

Setting a module project in Scala as an sbt project?

我想知道如何将常规 scala 项目转换为 sbt 项目。我已经尝试在根目录上手动创建一个 sbt 文件,正确实现,但 Intellij 仍然无法将其识别为 sbt 项目,即它不会在 "View -> Tool Windows" 中显示 "SBT"选项。

我该怎么办?我实际上想做的是创建一个包含多个(独立)模块的空项目。

据我所知,似乎没有办法直接添加带有 sbt 支持的模块,对吗?

谢谢

我建议您使用单个多模块 SBT 项目。 sbt 是一个很棒的 scala 构建工具,你可以用 sbt 做很多事情,包括从存储库中检出一个模块并构建它。

sbt
projects
project <helloProject>

实际上,此功能允许多人并行处理同一个项目。请看这个:http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi-Project.html

这里是一个多项目构建的例子。根项目 "aggregates" 它们全部,以防你想将它们全部编译在一起或将它们全部打包在一起,等等。 "coreLibrary" 项目取决于 "coreA" 和 "coreB" 的代码.

import sbt.Keys._
import sbt._

name := "MultiProject"

lazy val root = project.in(file(".")).aggregate(coreA, coreB, coreLibrary)

lazy val coreA = Project("CoreA", file("core-a")).settings(
  organization := "org.me",
  version := "0.1-SNAPSHOT"
)

lazy val coreB = Project("CoreB", file("core-b")).settings(
  organization := "org.me",
  libraryDependencies += "org.apache.kafka" %% "kafka" % "0.8.2-beta",
  version := "0.3-SNAPSHOT"
)

lazy val coreLibrary = Project("UberCore", file("core-main")).dependsOn(coreA, coreB).settings(
  organization := "org.me",
  version := "0.2-SNAPSHOT"
)

您可以(例如)从命令行编译每个项目:

>sbt CoreB/compile

或者您可以交互式地执行此操作:

>sbt
>project CoreB
>compile