Подпроектные зависимости в SBT - PullRequest
1 голос
/ 18 мая 2011

У меня странная проблема с подпроектами SBT, которая, я думаю, связана с зависимостями. Вот мои настройки:

  • У меня есть проект SBT с двумя подпроектами A и B.
  • A содержит класс и сопутствующий объект MyA
  • B зависит от A.
  • B содержит объект MyB, у которого есть метод main.

Когда я пытаюсь выполнить MyB из приглашения SBT, я получаю NoSuchMethodError на MyA. Это не ClassNotFoundException, но, возможно, это происходит потому, что он видит класс MyA на пути к классам, но не объект MyA.

В качестве проверки работоспособности я отбросил подпроект B и переместил его источник в дерево источников A. Когда я запускаю MyB из приглашения SBT, он работает как положено.

Кто-нибудь сталкивался с этим или я делаю что-то явно не так?

Вот моя конфигурация проекта:

class MyProject(info: ProjectInfo) extends ParentProject(info) {

  lazy val a = project("a", "a", new AProject(_))
  lazy val b = project("b", "b", new BProject(_), a)

  object Dependencies {
    lazy val scalaTest = "org.scalatest" % "scalatest_2.9.0" % "1.4.1" % "test"
  }

  class AProject(info: ProjectInfo) extends DefaultProject(info) with AutoCompilerPlugins {
    val scalaTest = Dependencies.scalaTest
    val continuationsPlugin = compilerPlugin("org.scala-lang.plugins" % "continuations" % "2.9.0")
    override def compileOptions = super.compileOptions ++ compileOptions("-P:continuations:enable") ++ compileOptions("-unchecked")
  }

  class BProject(info: ProjectInfo) extends DefaultProject(info)

}

1 Ответ

2 голосов
/ 18 мая 2011

Оказалось, что была проблема с включением плагина продолжения в проекте B. Вот моя рабочая конфигурация:

class MyProject(info: ProjectInfo) extends ParentProject(info) {

  lazy val a = project("a", "a", new AProject(_))
  lazy val b = project("b", "b", new BProject(_), a)

  object Dependencies {
    lazy val scalaTest = "org.scalatest" % "scalatest_2.9.0" % "1.4.1" % "test"
  }

  class AProject(info: ProjectInfo) extends DefaultProject(info) with AutoCompilerPlugins {
    val scalaTest = Dependencies.scalaTest
    val continuationsPlugin = compilerPlugin("org.scala-lang.plugins" % "continuations" % "2.9.0")
    override def compileOptions = super.compileOptions ++ compileOptions("-P:continuations:enable") ++ compileOptions("-unchecked")
  }

  class BProject(info: ProjectInfo) extends DefaultProject(info) with AutoCompilerPlugins {
    override def compileOptions = super.compileOptions ++ compileOptions("-P:continuations:enable") ++ compileOptions("-unchecked")
  }

}
...