4

我刚刚为 IntelliJ 安装了SBT 插件并成功导入了我的项目。IntelliJ 中的 SBT 控制台按预期显示,但是由于我的项目布局,我无法使用它。整个问题是我的 SBT Play!project 不是顶级目录。相反,我有几个子模块的 Maven 父 pom,其中放置了我的 SBT 应用程序。这是它的样子:

MyProject (parent pom)
-> submodule1 (JAR)
-> submodule2 (JAR)
-> webapp (SBT Play! webapp module)

运行 Play 没有问题!来自 Linux CLI 的应用程序,之前将目录更改为MyProject\webapp并从那里执行 SBT。但是,我看不到在 IntelliJ 中为 SBT 控制台设置根目录的任何选项。我已将整个项目导入工作区,因此默认项目根目录MyProject显然不是 SBT 项目。

有什么方法可以更改 IntelliJ SBT 插件的“工作目录”?

4

1 回答 1

3

我有同样的问题,我是这样解决的:

  1. 首先将您的根添加为新模块。在您的情况下,它将是 MyProject。我很小心地将它添加为一个空白模块,但如果你已经有类似 pom 文件的东西(这引出了你为什么要使用 SBT 的问题),那么你可以让 IntelliJ 为你导入它。
  2. 接下来,将 scala 文件添加到您的项目根目录以映射子项目。关于如何设置其中之一的很好的解释可以在scala wiki上找到

导入 sbt._ 导入密钥._

object HelloBuild extends Build {
    lazy val root = Project(id = "MyProject",
                            base = file(".")) aggregate(submodule1, submodule2, webapp)    

lazy val submodule1 = Project(id = "submodule1",
                           base = file("submodule1"))

    lazy val submodule2 = Project(id = "submodule2",
                           base = file("submodule2"))

    lazy val webapp = Project(id = "webapp",
                           base = file("webapp"))

}
  1. 启动您的 SBT,您现在应该能够在项目之间切换。如果您已启动并运行它,请确保使用该reload命令应用更改。

projects您可以使用该命令列出 SBT 识别为模块的项目。使用 切换项目project [projectName]。所以要切换到 submodule2,只需键入project submodule2.

于 2013-09-20T02:16:12.343 回答