【问题标题】:Beginner's guide to SBT 0.10 and IDEASBT 0.10 和 IDEA 初学者指南
【发布时间】:2011-08-12 11:12:32
【问题描述】:

我是 SBT 的新手,不确定如何开始一个项目。有人可以指点我创建 Hello World 类型项目的初学者指南,或者给我一些线索吗?

我首选的 IDE 是 IDEA。我已经按照IDEA Plugins page 上的说明运行sbt-idea。目前我有点困惑,因为

  • 没有创建源文件夹 - 我应该在哪里/如何创建它们以及 SBT 如何知道在哪里查找?
  • 当我已经将scalaVersion := "2.9.0" 放入build.sbt 文件时,为什么还要尝试使用Scala 2.8.1?这意味着 IDEA 无法识别 object HelloWorld extends App {}
  • 以上插件页面上的说明建议更改“运行配置(包括默认运行配置)”的启动前选项。列出了 13 种不同的默认配置,用于不同的事物 - 要更改哪一种?我应该创建一个新的吗?这些默认配置仅适用于这个项目,还是会对我所有其他不使用 SBT 的项目产生不利影响?

谢谢。

【问题讨论】:

    标签: scala intellij-idea sbt sbt-idea


    【解决方案1】:

    这对我有用:

    首先获取 sbt 和 gen-idea 插件...

    1. 下载 sbt-launch.jar 并按照SBT Github wiki 中的说明创建用于启动它的脚本。
    2. 为您的新项目创建一个目录,例如(在 linux 上)~/myCode/myNewProject 并切换到该目录
    3. 运行sbt 命令。这应该下载 scala 库并创建一个“项目”和“目标”目录。
    4. 切换到“项目”目录。
    5. sbt-idea plugin Github wiki 所述,使用以下几行在此目录中创建一个新文件“build.sbt”:

      resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
      
      addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.0.0")
      
    6. 切换回主项目目录,例如 ~/myCode/myNewProject。运行sbt。它应该下载 gen-idea 插件。

    7. 从 sbt 控制台(现在应该正在运行),运行gen-idea 命令。它应该创建 IDEA 项目目录。对我来说,它还会发出大量警告。

    现在开始运行 IDEA SBT 控制台插件...

    1. 打开 IDEA 并从插件管理器安装“SBT”插件并重新启动 IDEA。 (注意这是 IDEA 插件,而不是上面描述的 sbt 插件。) 配置 SBT 插件 as described on its wiki(运行配置、sbt-launch.jar 的位置等)。
    2. 在IDEA中打开刚刚生成的IDEA项目。
    3. 按照sbt wiki under 'Directory Layout' 中的说明将您的代码和其他内容放在预期的默认目录中。您需要自己创建这些目录 - sbt 不会自动创建它们。 'src' 和 'test' 目录应该与 sbt 创建的 'project' 和 'target' 目录处于同一级别。
    4. 创建一个新的 'build.sbt' 文件并将其放入 ~/myCode/myProject (或您所称的任何名称)。因为我只是在搞清楚 sbt,所以到目前为止我的很简单 - 只是将 scalatest 指定为依赖项并使用 Scala 2.9:

      name := "myProject"
      
      version := "0.1"
      
      organization := "me"
      
      libraryDependencies += "org.scalatest" % "scalatest_2.9.0" % "1.6.1"
      
      scalaVersion := "2.9.0"
      
    5. 在 IDEA 屏幕底部的 SBT 控制台中输入 reload 命令。它应该为您下载 scalatest 和 Scala 2.9。也许您也需要运行“更新”。

    【讨论】:

    • 感谢您提供详细的指南和有用的链接。最好将第 5 步中的 build.sbt 文件放入 ~/.sbt/plugins/ 中,就像 wiki 建议的那样,您不必为每个项目都这样做......在 Windows 上,您必须自己在“用户”中创建此目录\yourname\`,使用命令行。无论如何,现在我已经按照 sbt wiki 中的目录布局设置了文件夹,效果很好!
    【解决方案2】:

    我为此写了very quick guide。它不是旨在成为 SBT 指南 - 为此没有办法击败 SBT Wiki。这也毫无意义,因为一个人只能为 wiki 本身做出贡献。

    但是,我认为我的快速指南会让你如你所愿。

    至于目录创建,我得到的答案是 SBT 期望 IDE 来处理——我不太喜欢这种态度,但插件可以完成这项工作。你会看到我安装了 sbt eclipse 插件,所以它会为我做这件事,即使我自己使用 IDEA(当我使用 IDE 时)。

    另外,请注意,理想情况下,您同时使用您提到的用于 SBT 的 IDEA 插件,和用于 IDEA 的 SBT 插件。插件列表见here

    除非 IDEA 插件已经发展了很多,否则您确实需要从 SBT 自己生成 IDEA 配置 - IDEA 不会“读取”您的配置。这就是 IDEA 的 SBT 插件所做的。安装它,然后sbt gen-idea。我希望这将解决您提到的问题。

    但是请注意,您用于编译项目的 Scala 版本和 SBT 自己使用的 Scala 版本确实不同。这不是问题,正如预期的那样。根据您的问题,我不确定您提到的 2.8.1 版本是 SBT 使用的版本,还是 IDEA 使用的版本 - 甚至是用于编译您的项目的版本,表明某些东西不起作用。

    你把你提到的例子放在哪里?您应该遵循 maven 样式的目录层次结构,这意味着将其放在 src/main/scala/ 上,如果您也遵循 Java 约定,则可能是与包相关的子目录。

    在继续使用 IDEA 之前,尝试使用 sbt 进行编译,以确保其正常工作。

    【讨论】:

    • 谢谢。我确实看到了您的指南,这很有帮助,但我不知道您只是在运行 Eclipse 插件来创建目录!我以前没有使用过 Maven,所以我不太熟悉那里的结构。我确实将源文件放在了project 目录中,但它不起作用,但是当我将它们移动到正确的位置时它会起作用!
    • @Luigi 在这种情况下,请查看“Scala application structure”问题。
    【解决方案3】:

    我通常将 src 放入文件夹“src/test/scala”和“src/main/scala”。 sbt-idea 会将这个文件夹添加到idea中的源/测试文件夹中。

    sbt 本身需要 Scala 2.8.1 但这个版本与你的代码版本无关。如果你尝试编译一些源代码,sbt 会下载 Scala 2.9.0。

    【讨论】:

    • sbt-idea 在我运行它时没有添加任何源文件夹。它将两个版本的 Scala 都放在了外部库中,但它仍然无法识别 App 类。
    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2012-07-20
    • 2010-09-23
    • 1970-01-01
    • 2014-04-16
    • 2012-12-10
    相关资源
    最近更新 更多