Ответ 1
sbt 0.13.x использует Scala 2.10.x, когда он загружается, поэтому сам sbt 0.13.x должен быть скомпилирован против Scala 2.10, и поэтому все sbt-плагины для 0.13.x.
Примечание: sbt 0.13 может определять проекты Scala, используя 2.11.x.
Я использую Scala 2.11.1 и sbt 0.13.5.
У меня есть плагин sbt, который содержит вспомогательную функцию для создания входных задач следующим образом (реализация удаляется, поскольку она не имеет отношения к проблеме):
def register(name: String, description: String): Def.Setting[InputTask[Unit]] = {
InputKey[Unit](name, description) <<= Def.inputTask {
println("test")
}
}
Эта функция компилируется и отлично работает в Scala 2.10.4, однако, как только я переключусь на 2.11.1, она терпит неудачу со следующей ошибкой:
не может расширять макросы, скомпилированные предыдущими версиями Scala
Является ли макрос Def.inputTask
просто сломанным в Scala 2.11.1, или мне не хватает некоторых вопиющих деталей?
Прямо сейчас вышеуказанная функция находится в простейшем плагине sbt, который только можно себе представить. Также нет зависимостей.
sbt 0.13.x использует Scala 2.10.x, когда он загружается, поэтому сам sbt 0.13.x должен быть скомпилирован против Scala 2.10, и поэтому все sbt-плагины для 0.13.x.
Примечание: sbt 0.13 может определять проекты Scala, используя 2.11.x.
Если вы используете scala 2.11.x, используйте эту строку в файле build.sbt.
libraryDependencies + = "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
Это то, что я только что пробовал, и работает с scalaVersion
of 2.11.6
Код проверяется на github, если вы хотите проверить
У меня версия sbt
как
$ sbt --version
sbt launcher version 0.13.8
Настройки моего проекта выглядят как
object LearningScalaBuild extends Build {
lazy val commonSettings = Seq(
organization := "com.learner",
version := "0.1.0",
scalaVersion := "2.11.6",
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
)
lazy val root = project.in(file(".")).aggregate(s99, ahka)
lazy val s99 = project.in(file("s99"))
.settings(commonSettings: _*)
lazy val ahka = project.in(file("ahka"))
.settings(commonSettings: _*)
.settings(libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.3.9")
}
Я запустил его на Travis CI
и, похоже, хорошо работает
[info] Resolving org.scalatest#scalatest_2.11;2.2.4 ...
[info] Resolving org.scala-lang#scala-reflect;2.11.2 ...
[info] Resolving org.scala-lang.modules#scala-xml_2.11;1.0.2 ...
[info] Resolving org.scala-lang#scala-compiler;2.11.6 ...
[info] Resolving org.scala-lang#scala-reflect;2.11.6 ...
[info] Resolving org.scala-lang.modules#scala-xml_2.11;1.0.3 ...
[info] Resolving org.scala-lang.modules#scala-parser-combinators_2.11;1.0.3 ...
[info] Resolving jline#jline;2.12.1 ...
[info] downloading https://repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.11/2.3.9/akka-actor_2.11-2.3.9.jar ...
[info] [SUCCESSFUL ] com.typesafe.akka#akka-actor_2.11;2.3.9!akka-actor_2.11.jar (253ms)
[info] downloading https://repo1.maven.org/maven2/com/typesafe/config/1.2.1/config-1.2.1.jar ...
[info] [SUCCESSFUL ] com.typesafe#config;1.2.1!config.jar(bundle) (170ms)
[info] Done updating.
[info] 'compiler-interface' not yet compiled for Scala 2.11.6. Compiling...
[info] Run completed in 13 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
[info] Compilation completed in 18.159 s
[info] Compiling 1 Scala source to /home/travis/build/hhimanshu/learningScala/s99/target/scala-2.11/test-classes...
[info] P01Spec:
[info] [Dummy Test] A List
[info] - must return true when provided empty list
[info] Run completed in 259 milliseconds.
[info] Total number of tests run: 1
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[success] Total time: 28 s, completed May 30, 2015 3:41:26 AM
The command "sbt ++2.11.6 test" exited with 0.
Done. Your build exited with 0.
Я изменил файл build.sbt. Теперь он работает на меня. Ниже приведено изменение
scalaVersion: = "2.11.6"
scalacOptions + = "-deprecation"
libraryDependencies + = "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"