我正在尝试创建一个新项目,这次使用的是sbt 1.0.2而不是0.13.x,我现在使用了很长时间。
我有一个与https://github.com/vmunier/akka-http-with-scalajs-example/blob/master/build.sbt
相当的多项目设置我现在的问题是,当我尝试运行[error] (projectname/compile:bgRun) No main class detected.
sbt run
这是我当前的build.sbt
文件:
lazy val generalSettings = Seq(
name := "awesomeproject.tld",
version := "0.1",
scalaVersion := "2.12.3"
)
lazy val client = (project in file("modules/client"))
.settings(generalSettings: _*)
.settings(
name := "client",
libraryDependencies ++= Seq(
"com.lihaoyi" %%% "scalatags" % "0.6.5",
"org.scala-js" %%% "scalajs-dom" % "0.9.2"
)
, scalaJSUseMainModuleInitializer := true
)
.enablePlugins(ScalaJSPlugin, ScalaJSWeb)
.dependsOn(sharedJS)
lazy val server = (project in file("modules/server"))
.settings(generalSettings: _*)
.settings(
name := "server",
scalaJSProjects := Seq(client),
pipelineStages in Assets := Seq(scalaJSPipeline),
// triggers scalaJSPipeline when using compile or continuous compilation
//compile in Compile := ((compile in Compile) dependsOn scalaJSPipeline).value,
WebKeys.packagePrefix in Assets := "public/",
//managedClasspath in Runtime += (packageBin in Assets).value,
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor" % "2.5.4",
"com.typesafe.akka" %% "akka-testkit" % "2.5.4" % Test,
"com.typesafe.akka" %% "akka-stream" % "2.5.4",
"com.typesafe.akka" %% "akka-stream-testkit" % "2.5.4" % Test,
"com.typesafe.akka" %% "akka-http" % "10.0.10",
"com.typesafe.akka" %% "akka-http-testkit" % "10.0.10" % Test,
"ch.qos.logback" % "logback-classic" % "1.2.3",
"com.typesafe.scala-logging" %% "scala-logging" % "3.7.2",
"com.lihaoyi" %% "scalatags" % "0.6.5",
"com.vmunier" %% "scalajs-scripts" % "1.1.0"
)
, mainClass := Some("tld.awesomeproject.Main")
)
.dependsOn(sharedJVM)
lazy val shared = (crossProject.crossType(CrossType.Pure) in file("modules/shared"))
.settings(generalSettings: _*)
.settings(
name := "shared"
)
lazy val sharedJS = shared.js
lazy val sharedJVM = shared.jvm
正如您所见,我尝试通过子项目中的mainClass := Some("tld.awesomeproject.Main")
显式设置来解决问题。我还试图明确设置一个根项目,让它依赖于服务器,但没有运气。
我想这里的真正问题是,
onLoad in Global := (Command.command("project server", _: State)) compose (onLoad in Global)
不再适用于sbt 1.0.2。
我检查了Command
课程,但之后我并不聪明。根本没有更多的方法可以回馈一个州。
任何人都可以这样流下来吗?我想要的是运行一个向客户端发送一些javascript的服务器......这不应该是黑魔法,实际上一切都像我的0.13中的魅力一样。项目
答案 0 :(得分:3)
这应该有效:
onLoad in Global ~= (_ andThen ("project server" :: _))
参考:https://github.com/sbt/sbt/issues/1224#issuecomment-331840364