使用SBT控制台将目录更改为IntelliJ中的SBT项目

时间:2013-06-20 21:35:53

标签: intellij-idea sbt

我刚为IntelliJ安装了SBT plugin并成功导入了我的项目。 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控制台设置root目录的任何选项。我将整个项目导入到工作空间中,因此默认项目根目录为MyProject,显然不会将其作为SBT项目处理。

有没有办法更改IntelliJ SBT插件的“工作目录”?

1 个答案:

答案 0 :(得分:2)

我有同样的问题,这就是我如何实现的目标:

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

    导入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命令应用更改。
    2. 您可以使用projects命令列出SBT识别为模块的项目。使用project [projectName]切换项目。因此,要切换到子模块2,只需键入project submodule2.

      即可