2016-03-14 3 views
1

Я пытаюсь создать приложение Play с задним концом и передним концом (используя Scala.js). Я разделил код на client и server папки.Невозможно создать многопроектную сборку

Для создания Multi Project Build я смотрел на эту http://www.scala-sbt.org/release/docs/Multi-Project.html и сделать мой build.sbt так:

name := """ScalaWeb""" 

version := "1.0-SNAPSHOT" 

lazy val commonSettings = Seq(
    scalaVersion := "2.11.7", 

    libraryDependencies ++= Seq(
    jdbc, 
    cache, 
    ws, 
    specs2 % Test 
), 

    libraryDependencies ++= Seq(
    "org.sorm-framework" % "sorm" % "0.3.19", 
    "org.scala-lang" % "scala-compiler" % scalaVersion.value force(), 
    "com.h2database" % "h2" % "1.3.148" 
), 

    libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0", 

    /*libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0", 
    libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.12" 
    libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.3"*/ 

    resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases", 

    // Play provides two styles of routers, one expects its actions to be injected, the 
    // other, legacy style, accesses its actions statically. 
    routesGenerator := InjectedRoutesGenerator, 

    scalacOptions += "-Ylog-classpath", 

    // use this if you just want jawn's parser, and will implement your own facade 
    libraryDependencies += "org.spire-math" %% "jawn-parser" % "0.8.3", 

    // use this if you want jawn's parser and also jawn's ast 
    libraryDependencies += "org.spire-math" %% "jawn-ast" % "0.8.3", 

    //for reading Json libraries 
    libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.2.1" 
) 

lazy val server = (project in file("server")).settings(
    commonSettings: _* 
).enablePlugins(PlayScala) 

lazy val client = (project in file("client")).settings(
    commonSettings: _* 
).enablePlugins(PlayScala) 

fork in run := true 

Поэтому в основном я поместил все зависимости в commonSettings и импортирован, что в client и server проектов.

Однако, я получаю эту ошибку:

[error] (scalaweb/compile:backgroundRun) No main class detected. 

Почему это происходящее? Я установил свой build.sbt неправильно?

ответ

1

Это потому, что ваш корневой проект (scalaweb) не имеет основного класса.

Вы можете:

  1. команда запуска запустить сервера, выполнив: сервер/запустить
  2. совокупного клиента и сервер в корневом проекте (http://www.scala-sbt.org/0.13/docs/Multi-Project.html#Aggregation)

Это может делать то, что вы хотите ,

+0

Я добавил 'lazy val root = (проект в файле (". ")). агрегат (клиент, сервер) 'to' build.sbt'. Я даже создал фиктивный класс в обоих проектах, который содержит только 'def main (args: Array [String]): Unit = { }'. Тем не менее, я по-прежнему получаю ту же ошибку. – octavian

+0

работает ли сервер/запуск или клиент/запуск? –

+0

Нет, если я набираю 'активатор', а затем' server run', я получаю '[ошибка] Ожидаемый идентификатор символа [ошибка] Недействительная команда: server (похоже: set) [ошибка] Ожидаемый идентификатор проекта [ошибка] Ожидаемый '/' (при выборе проекта) [ошибка] Ожидаемая конфигурация' – octavian

Смежные вопросы