Beginner's guide to SBT 0.10 and IDEA

前端 未结 3 1844
慢半拍i
慢半拍i 2020-12-23 18:04

I\'m new to SBT and am unsure how to get a project started. Can someone point me to a beginner\'s guide to creating a Hello World type project, or give me some clues?

相关标签:
3条回答
  • 2020-12-23 18:44

    This worked for me:

    First get sbt and the gen-idea plugin going...

    1. Download the sbt-launch.jar and create the script for launching it as described on the SBT Github wiki.
    2. Create a directory for your new project, such as (on linux) ~/myCode/myNewProject and change to that directory
    3. Run sbt command. This should download the scala libraries and create a 'project' and 'target' directories.
    4. Change to the 'project' directory.
    5. Create a new file 'build.sbt' in this directory with the following lines, as described on the sbt-idea plugin Github wiki:

      resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
      
      addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.0.0")
      
    6. Change back to your main project directory such as ~/myCode/myNewProject. Run sbt. It should download the gen-idea plugin.

    7. From the sbt console (which should be running now), run the gen-idea command. It should create the IDEA project directories. For me, it also emits copious warnings.

    Now get the IDEA SBT console plugin going...

    1. Open IDEA and install the "SBT" plugin from the plugin manager and restart IDEA. (Note this is the IDEA plugin, not the sbt plugin described above.) Configure the SBT plugin as described on its wiki (run configurations, location of sbt-launch.jar etc).
    2. Open the freshly generated IDEA project in IDEA.
    3. Put your code and other things in the expected default directories as described on the sbt wiki under 'Directory Layout'. You need to create these directories yourself - sbt doesn't create them automatically. The 'src' and 'test' directories should be at the same level as the 'project' and 'target' directories that sbt created.
    4. Make up a new 'build.sbt' file and put it in ~/myCode/myProject (or whatever you called it). Since I am just figuring out sbt, mine is simple so far - just nominates scalatest as a dependency and uses 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. Enter the reload command in the SBT console at the bottom of the IDEA screen. It should download scalatest and Scala 2.9 for you. Maybe you need to run 'update' too.

    0 讨论(0)
  • 2020-12-23 18:46

    I normally put the src into a folder "src/test/scala" and "src/main/scala". sbt-idea will add this folders ase source/test folder in idea.

    sbt itself needs Scala 2.8.1 but this version has nothing to do with the version of your code. If you try to compile some source sbt will download Scala 2.9.0.

    0 讨论(0)
  • 2020-12-23 18:58

    I wrote a very quick guide about it. It is not intended to be an SBT guide -- there's no way to beat the SBT Wiki for that. It would be pointless too, since one can just contribute to the wiki itself.

    But, I think my very quick guide will get you up and running as you wish.

    As for directory creation, the answer I got was that SBT expects the IDE to handle that -- I don't really like that attitude, but a plugin can do the job. You'll see I install the sbt eclipse plugin just so it will do it for me, even though I use IDEA myself (when I use an IDE).

    Also, note that, ideally, you use both the IDEA plugin for SBT that you mentioned, and the SBT plugin for IDEA. See here for the list of plugins.

    Unless the IDEA plugin has evolved a lot, you really need to generate an IDEA configuration from SBT iself -- IDEA won't "read" your configuration. That's what the SBT plugin for IDEA does. Install it, and sbt gen-idea. I expect that will solve the problem you mentioned.

    Note, however, that the version of Scala you use to compile your project and the version of Scala that SBT uses for itself are different indeed. This is not a problem, it is as expected. I'm not sure from your question if the 2.8.1 version you mentioned is the one used by SBT, or one used by IDEA -- or even one used to compile your project, indicating that something is not working.

    Where did you put the example you mentioned anyway? You should follow maven-style directory hierarchy, which means putting it on src/main/scala/, and possibly a subdirectory of that related to the package, if you follow Java convention as well.

    And try to compile with sbt, to make sure that is working, before proceeding to IDEA.

    0 讨论(0)
提交回复
热议问题