Как настроить проект IntelliJ + Scala + specs + sbt?

Я пытаюсь настроить пустой проект sbt со спецификациями2 для Scala (2.10) с поддержкой IntelliJ (12.1), и я получаю эту ошибку, когда делаю sbt compile в пустом каталоге проекта:

% sbt compile                                                                                                                                                                                                 
Getting net.java.dev.jna jna 3.2.3 ...
:: retrieving :: org.scala-sbt#boot-jna
    confs: [default]
    1 artifacts copied, 0 already retrieved (838kB/32ms)
Getting org.scala-sbt sbt_2.9.1 0.11.3 ...
:: retrieving :: org.scala-sbt#boot-app
    confs: [default]
    37 artifacts copied, 0 already retrieved (7245kB/734ms)
Getting Scala 2.9.1 (for sbt)...
:: retrieving :: org.scala-sbt#boot-scala
    confs: [default]
    4 artifacts copied, 0 already retrieved (19939kB/402ms)
[info] Loading project definition from /Users/pathikrit/Projects/scalgos/project
[info] Set current project to scalgos (in build file:/Users/pathikrit/Projects/scalgos/)
Getting Scala 2.10.1 ...
:: retrieving :: org.scala-sbt#boot-scala
    confs: [default]
    5 artifacts copied, 0 already retrieved (24386kB/107ms)
[info] Updating {file:/Users/pathikrit/Projects/scalgos/}default-7d65e1...
[info] Resolving org.scala-lang#scala-library;2.10.1 ...
[info] Resolving org.specs2#specs2_2.10.1;1.14 ...
[warn]  module not found: org.specs2#specs2_2.10.1;1.14
[warn] ==== local: tried
[warn]   /Users/pathikrit/.ivy2/local/org.specs2/specs2_2.10.1/1.14/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/specs2/specs2_2.10.1/1.14/specs2_2.10.1-1.14.pom
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.specs2#specs2_2.10.1;1.14: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] {file:/Users/pathikrit/Projects/scalgos/}default-7d65e1/*:update: sbt.ResolveException: unresolved dependency: org.specs2#specs2_2.10.1;1.14: not found
[error] Total time: 4 s, completed Mar 25, 2013 5:11:17 PM

Мой файл build.sbt выглядит так:

name := "scalgos"

version := "0.0.1"

scalaVersion := "2.10.1"

libraryDependencies += "org.specs2" %% "specs2" % "1.14" % "test"

Я установил sbt, выполнив brew install sbt:

% brew info sbt                                                                                                                                                                                   
sbt: stable 0.12.2, devel 0.13.0-M1
http://www.scala-sbt.org
/usr/local/Cellar/sbt/0.11.3-2 (3 files, 1.1M) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/sbt.rb
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to SBT.
For convenience, this can specified in `~/.sbtconfig`.

For example:
    SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"

Brew говорит, что у меня sbt 0.12, но когда я sbt --version получаю:

% sbt --version                                                                                                                                                                                    
sbt launcher version 0.11.3-2

Я попытался хотя бы сгенерировать файлы IntelliJ, поместив это в свой $PROJECT_DIR/projects/plugins.sbt:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0")

Но когда я сделал sbt gen-idea, я получил эту ошибку:

% sbt gen-idea                                                                                                                                                                                               
[info] Loading project definition from /Users/pathikrit/Projects/scalgos/project
[info] Set current project to scalgos (in build file:/Users/pathikrit/Projects/scalgos/)
[info] Trying to create an Idea module scalgos
[info] Updating {file:/Users/pathikrit/Projects/scalgos/}default-7d65e1...
[info] Resolving org.scala-lang#scala-library;2.10.1 ...
[info] Resolving org.specs2#specs2_2.10.1;1.14 ...
[warn]  module not found: org.specs2#specs2_2.10.1;1.14
[warn] ==== local: tried
[warn]   /Users/pathikrit/.ivy2/local/org.specs2/specs2_2.10.1/1.14/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/specs2/specs2_2.10.1/1.14/specs2_2.10.1-1.14.pom
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.specs2#specs2_2.10.1;1.14: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] {file:/Users/pathikrit/Projects/scalgos/}default-7d65e1/*:update: sbt.ResolveException: unresolved dependency: org.specs2#specs2_2.10.1;1.14: not found
[info] Updating {file:/Users/pathikrit/Projects/scalgos/}default-7d65e1...
[info] Resolving org.scala-lang#scala-library;2.10.1 ...
[info] Resolving org.specs2#specs2_2.10.1;1.14 ...
[warn]  module not found: org.specs2#specs2_2.10.1;1.14
[warn] ==== local: tried
[warn]   /Users/pathikrit/.ivy2/local/org.specs2/specs2_2.10.1/1.14/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/specs2/specs2_2.10.1/1.14/specs2_2.10.1-1.14.pom
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.specs2#specs2_2.10.1;1.14: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] {file:/Users/pathikrit/Projects/scalgos/}default-7d65e1/*:update: sbt.ResolveException: unresolved dependency: org.specs2#specs2_2.10.1;1.14: not found
[error] Failed to obtain dependency classpath
[error] java.lang.IllegalArgumentException
[error] Use 'last' for the full log.

Может ли кто-нибудь опубликовать пример build.sbt, который будет генерировать файлы IntelliJ 12.1 для Scala 2.10.1 и sbt?

Я проверил свой проект здесь: https://github.com/pathikrit/scalgos

Посоветуйте что я делаю не так???


person pathikrit    schedule 25.03.2013    source источник
comment
Я думаю, что brew согласен с вашей версией sbt: он говорит, что находится в /usr/local/Cellar/sbt/**0.11.3-2**. Я бы обновил его до 0.12 и попробовал еще раз. Ваш проект отлично работает для меня с sbt 0.12   -  person Ratan Sebastian    schedule 26.03.2013


Ответы (2)


вы можете использовать этот проект, который я создал, который предоставляет то, что вы ищете из коробки

Скелет

Сегодня вечером я планирую обновить конфигурацию sbt и последние и лучшие библиотеки (sbt-idea 1.3.0 и scala 2.10.1).

Наслаждайтесь!

person fracca    schedule 26.03.2013
comment
Круто, теперь я буду разветвлять ваш репозиторий каждый раз, когда буду взламывать проекты Scala — наверное, хорошая идея — заполнить по умолчанию main/src/scala/package/Hello.scala и test/src/scala/package/HelloSpec.scala? Честно говоря, я все равно не фанат этой глубокой структуры проекта в стиле maven... - person pathikrit; 26.03.2013
comment
Раньше у меня были тесты, но потом их действительно пришлось удалить. Смотрите обновленный build.sbt, теперь он подтягивает все последние библиотеки. Ваше здоровье. - person fracca; 27.03.2013

вам следует обновить версию sbt до 0.12.X, создать файл "project/build.properties" и указать "sbt.version=0.12.1"

я разветвил ваше репо и отредактировал версию sbt, кажется, она отлично работает на моей машине

https://github.com/yuanw/scalgos

person Yuan Wang    schedule 25.03.2013
comment
Спасибо, это была какая-то проблема с варкой, которая не обновляла sbt до 0.12 правильно. - person pathikrit; 26.03.2013