148

我刚开始使用 Scala/LiftWeb/Sbt 开发,我想在 IntelliJ Idea 中导入一个 Sbt 项目。实际上,我设法以两种不同的方式导入我的项目:

1) 使用 Maven。我创建了一个 Maven 项目,最重要的是我创建了一个 Sbt 项目,然后我将其导入 IntelliJ。然后我可以轻松地启动、停止码头服务器并做其他事情。但这不是我想要的。我想做同样的事情,只是没有 Maven。这导致我

2) 使用 Eclipse。因此,我创建了一个新的 Sbt 项目(使用我编写的一个小脚本,将 Sbt 项目配置为一个 WebProject)。然后我使用 sbt-eclipsify 插件为 Eclipse“转换”项目,然后将其导入 IntelliJ(现有源 -> eclipse)。但是问题从这里开始:我无法让 IntelliJ Sbt 插件工作。

谁能帮我这个?

4

7 回答 7

171

创建项目有三种基本方法 - 现代版本的 IntelliJ 可以直接导入 sbt 项目,否则您可以使用 sbt 插件生成 IntelliJ 项目,或使用 IntelliJ Scala 插件创建 sbt 项目。使用这两种解决方案的基本功能开箱即用,一些复杂的构建可能会出现问题,因此请尝试其他工具以查看它是否可以在那里工作。

智能

这些天来,IntelliJ IDEA 变得更好了。当前版本 (14.0.2) 通过 Scala 插件支持开箱即用的 sbt 项目。只需安装插件,您就可以毫无问题地打开 Scala/sbt 项目。

首选项中的插件下的 Scala 插件

使用该插件,只需指向一个 sbt 项目,IDEA 就会为您提供一个向导来打开该项目。

导入 sbt 项目

IntelliJ Scala 插件

IntelliJ 插件可以在这里找到 http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA或者可以使用设置 -> 插件对话框直接从 IDE 中安装。之后可以只做 File -> New Project -> Scala -> SBT based。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.sbtORPROJECT_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 项目文件中,则会加载它们。如果您不想下载/引用它们,请使用 command 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-ideasbt task 创建 IDEA 项目文件。

默认情况下,如果找到了 sbt 和库依赖项的分类器(即源代码和 javadocs),并且将引用添加到 IDEA 项目文件中,则会加载它们。如果您不想下载/引用它们,请使用 command 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)
   // ...
}
于 2010-11-23T08:58:33.003 回答
11

现在我手动完成。这很简单。

  1. 使用 SBT 创建项目
  2. 创建一个具有相同根路径的新 IDEA 项目
  3. 创建具有相同根路径的模块
  4. 将 src/main/scala 设置为模块上的 src 路径
  5. 设置 src/test/scala 为模块上的测试路径
  6. 添加 scala-library.jar 作为库
  7. 将 lib(如果存在)添加为模块库中的 jar 目录
  8. 添加 lib_managed/compile(如果存在)作为模块库中的 jar 目录
  9. 添加 lib_managed/test(如果存在)作为模块库中的 jar 目录

这就是记忆中的。如果它是自动化的会更好,但它现在没什么大不了的。

需要注意的一点:上述方法不适用于 new-school sbt,即 0.10 和更高版本,因为默认情况下它不会将依赖项复制到 lib_managed 中。你可以加

retrieveManaged := true

到您的 build.sbt 以使其将依赖项复制到 lib_managed 中。

于 2010-11-22T23:01:21.897 回答
7

如今, Tempus fugit和 IntelliJ IDEA 变得更好了。毕竟是 2015 年,不是吗?

话虽如此,最新版本的 IntelliJ IDEA 14.0.2通过 Scala 插件支持开箱即用的 sbt 项目。只需安装插件,您就可以轻松打开 Scala/sbt 项目。

首选项中的插件下的 Scala 插件

在撰写本文时,我使用的是插件的 Early Access 版本,它是 1.2.67.6.EAP。

使用插件只需指向一个 sbt 项目,IDEA 将为您提供一个向导来打开该项目。

导入 sbt 项目

关于 sbt 0.12.4 中的 sbt-idea

对于 sbt 0.12.4,系统范围的插件配置文件 -~/.sbt/plugins/build.sbtPROJECT_DIR/project/plugins.sbt- 应该有以下几行:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

运行sbt gen-idea生成IDEA项目文件。

阅读sbt-idea 插件网站了解更多最新信息。您可能还会发现我的博客文章Importing sbt-based project to IntelliJ IDEA 13 (with sbt-idea, Scala 2.11 and sbt 0.12)很有用。

于 2013-07-14T21:46:02.537 回答
5

对于 sbt 0.7

请参阅本页其他地方的答案

对于 sbt 0.10

克隆并构建 Ismael 的 sbt-idea:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

如果您还没有 sbt 插件库目录,请创建一个

mkdir -p  ~/.sbt/plugins/lib

将第一步构建的jar复制到这里

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

重新启动或重新加载 sbt,然后你可以运行gen-idea(或者gen-idea with-classifiers如果你也想要 intelliJ 中的源代码和 javadoc)

来源:Tackers 对消息组的建议

在 IntelliJ IDEA 13.x 本身中

你现在可以在 IDEA 中打开一个基于 SBT 的项目。它将创建必要的项目和模块,并在您对构建脚本进行更改时使您的依赖项保持最新。

于 2011-06-29T11:01:43.757 回答
2

我刚刚经历了所有这些痛苦。我花了几天时间试图建立一个可接受的环境,并得出结论 ENSIME、SBT 和 JRebel 将在一段时间内成为我的开发环境。是的,它要回到 Emacs,但是 ENSIME 通过重构、调试支持、导航等将它变成了一个想法。它远不及 Eclipse (Java),但除非 scala 插件工作得更好,否则它是我们有最好的。

在 Scala 开发环境达到标准(Eclipse 或 IntelliJ)之前,我不会打扰。他们实在是太马虎了。

请参阅电梯站点上的讨论。

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

在该线程中,有一个指向 IntelliJ 的 HOWTO 的链接,但尽管它有点工作,但有许多问题使它不太有用。

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/

于 2010-11-22T21:37:02.663 回答
2

2014 年的答案是旧的。在IntelliJ 13.x中,插件 Scala 是 0.41.2 版(包括 SBT)。

我的SBT 版本是 0.13.5(终端 sbt sbtVersion:)

转到项目的根文件夹并在终端中输入

sbt idea

您将看到两个新的隐藏文件夹.idea.idea_modules

然后在 IntelliJ 中,文件 > 打开 > 选择项目。它应该毫无问题地打开项目。

于 2014-11-30T22:34:34.597 回答
0

在开始创建 SBT 项目之前,请确保已在 IntelliJ IDEA 中下载并启用了 Scala 插件。

下面的链接解释了你需要知道的一切。

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-sbt.html

于 2016-05-20T10:21:56.987 回答