Как взаимодействовать с моим игровым приложением в консоли?

У меня есть приложение play 2.8.x, использующее scala.

В проекте sbt есть веб-проект play и еще один библиотечный модуль.

Можно ли взаимодействовать с другим модулем в REPL? В моей системе также установлен аммонит, но я не знаю, как загрузить мой модуль. Мне просто нужно собрать, а затем сослаться на библиотеку в моей папке сборки /target? Или есть лучший способ?

Могу ли я сделать это в sbt сам по себе или аммонит единственный способ?


person Blankman    schedule 25.06.2020    source источник


Ответы (1)


Каждый проект sbt имеет REPL, вам просто нужно запустить:

sbt> console

для корневого проекта или для проекта name

sbt> name/console

Но это обычный Scala REPL, если хотите аммонит, то есть инструкция на ammonite.io:

Вы также можете попробовать Ammonite 2.1.4 в существующем проекте SBT. Для этого добавьте в файл build.sbt следующее:

libraryDependencies += {
  val version = scalaBinaryVersion.value match {
    case "2.10" => "1.0.3"
    case _ ⇒ "2.1.4"
  }
  "com.lihaoyi" % "ammonite" % version % "test" cross CrossVersion.full
}

sourceGenerators in Test += Def.task {
  val file = (sourceManaged in Test).value / "amm.scala"
  IO.write(file, """object amm extends App { ammonite.Main.main(args) }""")
  Seq(file)
}.taskValue

// Optional, required for the `source` command to work
(fullClasspath in Test) ++= {
  (updateClassifiers in Test).value
    .configurations
    .find(_.configuration.name == Test.name)
    .get
    .modules
    .flatMap(_.artifacts)
    .collect{case (a, f) if a.classifier == Some("sources") => f}
}

После этого просто нажмите

sbt projectName/test:run

или если в области тестирования есть другие основные методы

sbt projectName/test:run-main amm 
person Mateusz Kubuszok    schedule 25.06.2020