我刚刚开始使用 Scala/LiftWeb/Sbt 开发,我想在 IntelliJ Idea 中导入一个 Sbt 项目。 实际上,我设法以两种不同的方式导入我的项目:
1) 使用 Maven。我创建了一个 Maven 项目,最重要的是创建了一个 Sbt 项目,然后将其导入到 IntelliJ 中。然后我可以轻松启动、停止码头服务器,并做其他事情。 但这不是我想要的。我想做同样的事情,只是不需要 Maven。 这引导我
2) 使用 Eclipse。因此,我创建了一个新的 Sbt 项目(使用我编写的一个小脚本,将 Sbt 项目配置为 WebProject)。然后我使用 sbt-eclipsify 插件将项目“转换”为 Eclipse,然后将其导入到 IntelliJ 中(现有源 -> eclipse)。 但问题从这里开始:我无法让 IntelliJ Sbt 插件工作。
谁能帮我解决这个问题吗?
最佳答案
创建项目有三种基本方法 - 现代版本的 IntelliJ 可以开箱即用地导入 sbt 项目,否则您可以使用 sbt 插件生成 IntelliJ 项目,或使用 IntelliJ Scala 插件创建 sbt 项目。使用这两种解决方案,基本功能都是开箱即用的,一些复杂的构建可能会出现问题,因此请尝试其他工具,看看它是否可以在那里工作。
IntelliJ
如今,IntelliJ IDEA 已经变得更好了。当前版本 (14.0.2) 通过 Scala 插件支持开箱即用的 sbt 项目。只需安装该插件,您就可以毫无问题地打开 Scala/sbt 项目。
使用该插件,只需指向 sbt 项目,IDEA 就会为您提供一个向导来打开此类项目。
IntelliJ Scala 插件
IntelliJ 插件可以在这里找到 http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA或者可以使用“设置”->“插件”对话框直接从 IDE 中安装。之后就可以执行"file"->“新建项目”->“Scala”->“基于 SBT”。 IntelliJ 将生成基本的 build.sbt,下载必要的依赖项并打开项目。
SBT 插件
可以在这里找到基于 sbt 文件生成创意项目的 Sbt 插件:https://github.com/mpeltonen/sbt-idea
SBT 12.0+ 和 13.0+
只需将 addSbtPlugin("com.github.mpeltonen"% "sbt-idea"% "1.5.2")
添加到您的 build.sbt
中;不需要额外的解析器。
旧版本:
SBT 0.11+
创建以下行并将其添加到 ~/.sbt/plugins/build.sbt
或 PROJECT_DIR/project/plugins.sbt
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/" addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
在sbt中使用gen-idea
创建IDEA项目文件。
默认情况下,如果找到 sbt 和库依赖项的分类器(即源代码和 javadocs),则会加载该分类器并将引用添加到 IDEA 项目文件中。如果您不想下载/引用它们,请使用命令gen-idea no-classifiers no-sbt-classifiers
。
SBT 0.10.1 (根据插件作者的说法,0.10.0 不会工作!)
创建以下行并将其添加到 ~/.sbt/plugins/build.sbt:
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"
使用gen-idea
sbt任务创建IDEA项目文件。
默认情况下,如果找到 sbt 和库依赖项的分类器(即源代码和 javadocs),则会加载该分类器并将引用添加到 IDEA 项目文件中。如果您不想下载/引用它们,请使用命令gen-idea no-classifiers no-sbt-classifiers
。
SBT 0.7
要使用它,只需从 sbt shell 运行它,它将使用该插件作为外部程序:
> *sbtIdeaRepo at http://mpeltonen.github.com/maven/
> *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
...
> update
...
> idea
...
您还可以根据需要在项目定义中添加特征:
import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
// ...
}
关于scala - 如何使用IntelliJ Idea创建SBT项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250318/