2017-02-12 24 views
1

Я создал проект Scala играть как этотScala Play и нескольких проектов SBT Строит

activator new foo play-event-sourcing-starter 

проект был успешно создан, и я могу пойти внутри и легко скомпилировать и запустить приложение.

Однако я хочу, чтобы у меня была многопроектная сборка sbt. Я googled и нашел это https://www.playframework.com/documentation/2.5.x/SBTSubProjects

Но это не то же самое, что я хочу, потому что здесь они играют как корневой проект. тогда как я хочу, чтобы у меня был пустой проект root с файлом build.sbt, а затем несколько проектов «сверстников». Один из них - игра.

Так что я изменил шаги по

mkdir -p LearnPlay/project 
cd LearnPlay 
activator new foo play-event-sourcing-starter 

Теперь я пошел внутри Foo и переехал build.sbt в каталог LearnPlay. Я также переместил файлы build.properties и plugins.sbt в папку LearnPlay/project.

я редактировал файл build.sbt так, чтобы корневой проект становится

lazy val root = (project in file("foo")).enablePlugins(PlayScala) 

Однако в настоящее время SBT не может скомпилировать проект больше, и он не может найти какой-либо из каркасных игр зависимостей.

sbt.ResolveException: unresolved dependency: com.typesafe.play#play-server_2.10;2.5.9: not found 
unresolved dependency: com.typesafe.play#play-netty-server_2.10;2.5.9: not found 
unresolved dependency: com.typesafe.play#play-logback_2.10;2.5.9: not found 
unresolved dependency: com.typesafe.play#play-test_2.10;2.5.9: not found 
unresolved dependency: com.typesafe.play#play-omnidoc_2.10;2.5.9: not found 
    at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:313) 

Это содержимое моего файла plugins.sbt. Определитель определен правильно, поэтому я не уверен, почему sbt не сможет найти зависимости после того, как файл был перемещен из подпроекта в корневой проект. он смог разрешить все, когда файл находился в каталоге проекта проекта foo.

resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" 

// The Play plugin 
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.9") 

// web plugins 
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0") 

ответ

1

Дело в том, что дал мне некоторые идеи, что проблема есть:

unresolved dependency: com.typesafe.play#play-server_2.10;2.5.9: not found 

Вы не удивляйтесь, что SBT пытается загрузить версию сервера игры для Scala 2,10 , которого нет для Play 2.5.x, так как он уже вышел из жизненного цикла.

В моих проектах это происходит, если я не укажу версию scala в build.sbt или установите ее на 2.10, например.

lazy val root = (project in file("foo")).settings(
    scalaVersion := "2.10.6", 

так, я думаю, вам просто нужно добавить scalaVersion параметр и установить его на что-то из 2.11.x или 2.12.x

+0

Вы правы, но его немного удивительно, потому что scalaVersion был указанный в проекте sbt, хотя и не непосредственно на самом корневом проекте. Он смог выбрать правильную версию scala, когда она была в корневом проекте ... но не тогда, когда она использовала этот каталог. –

+0

Вы могли бы полностью показать свой build.sbt? – Mysterion