首页 文章

如何使用IntelliJ Idea创建SBT项目?

提问于
浏览
143

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

1)与Maven . 我创建了一个Maven项目,最重要的是我创建了一个Sbt项目,然后我在IntelliJ中导入了该项目 . 然后我就可以轻松启动,停止Jetty服务器,并做其他事情 . 但那不是我想要的 . 我想做同样的事情,只是Maven-free . 这导致我

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

谁能帮我这个?

7 回答

  • 5

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

    我的 SBT version is 0.13.5 (终端: sbt sbtVersion

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

    sbt idea
    

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

    然后在IntelliJ中,单击File> Open>选择项目 . 它应该没有任何问题地打开项目 .

  • 7

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

    IntelliJ

    如今,IntelliJ IDEA已经变得如此好 . 当前版本(14.0.2)支持使用Scala插件开箱即用的sbt项目 . 只需安装插件,您就可以毫无困难地打开Scala / sbt项目 .

    Scala plugin under Plugins in Preferences

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

    Import sbt project

    IntelliJ Scala插件

    IntelliJ插件可以在这里找到http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA,也可以使用Settings - > Plugins对话框从IDE中直接安装 . 之后可以做文件 - >新项目 - > 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.sbtPROJECT_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项目文件 .

    默认情况下,如果找到并将引用添加到IDEA项目文件,则会加载sbt和库依赖项的分类器(即源和javadoc) . 如果您不想下载/引用它们,请使用命令 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项目文件 .

    默认情况下,如果找到并将引用添加到IDEA项目文件,则会加载sbt和库依赖项的分类器(即源和javadoc) . 如果您不想下载/引用它们,请使用命令 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)
       // ...
    }
    
  • 170

    For sbt 0.7

    the answer elsewhere on this page .

    For sbt 0.10

    克隆并 Build Ismael的想法:

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

    创建一个sbt插件lib目录,如果你还没有

    mkdir -p  ~/.sbt/plugins/lib
    

    将步骤1中构建的jar复制到此处

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

    重新启动或重新加载sbt,然后你可以运行 gen-idea (如果你想在intelliJ中使用源和javadoc,则运行 gen-idea with-classifiers

    资料来源:Tackers' suggestion on the message group .

    In IntelliJ IDEA 13.x itself

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

  • 2

    现在我手工完成 . 这很简单 .

    • 使用SBT创建项目

    • 使用相同的根路径创建新的IDEA项目

    • 创建具有相同根路径的模块

    • 将src / main / scala设置为模块上的src路径

    • 将src / test / scala设置为模块上的测试路径

    • 将scala-library.jar添加为库

    • 将lib(如果存在)添加为模块库中的jar目录

    • 将lib_managed / compile(如果存在)添加为模块库中的jar目录

    • 将lib_managed / test(如果存在)添加为模块库中的jar目录

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

    一个注意事项警告:上述方法不适用于new-school sbt,即版本0.10和更新版本,因为默认情况下它不会将依赖项复制到lib_managed中 . 你可以加

    retrieveManaged := true
    

    到你的build.sbt,使它将依赖项复制到lib_managed .

  • 11

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

    以下链接解释了您需要知道的一切 .

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

  • 2

    如今,Tempus fugit和IntelliJ IDEA已经变得如此好 . 它's 2015 after all, isn't?

    话虽如此,the latest version of IntelliJ IDEA 14.0.2支持带有the Scala plugin开箱即用的sbt项目 . 只需安装插件,您就可以开放Scala / sbt项目而不会有太多麻烦 .

    Scala plugin under Plugins in Preferences

    我正在使用插件的Early Access版本,即编写时的1.2.67.6.EAP .

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

    Import sbt project

    关于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项目文件 .

    阅读the sbt-idea plugin website以获取更多最新信息 . 您可能还会发现我的博客条目Importing sbt-based project to IntelliJ IDEA 13 (with sbt-idea, Scala 2.11 and sbt 0.12)很有用 .

  • 0

    我刚刚经历了所有这些痛苦 . 我花了好几天试图获得一个可接受的环境,并得出结论,ENSIME,SBT和JRebel将成为我的开发环境已有一段时间了 . 是的,它回到了Emacs,但是ENSIME通过重构,调试支持,导航等将它变成了一点点或者想法 . 它不像Eclipse(Java)那么好,但是除非scala插件工作得更好,它就是我们最好的 .

    在Scala开发环境达到snuff(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/

相关问题