如何组合crossProject和dependsOn

use*_*074 5 sbt scala.js

我有一个多项目定义,如下所示:

lazy val commonSettings = settings(
  libraryDependencies ++= Seq(
    "ch.qos.logback" % "logback-classic" % "1.1.2",
     ...
)

lazy val core = (project in file(".")).
  settings(commonSettings: _*).
  settings(...
)

lazy val web = (project in file("web")).
  settings(commonSettings: _*).
  settings(...
).dependsOn(core)
Run Code Online (Sandbox Code Playgroud)

问题是我想设置web项目以使用Scala JS客户端/服务器模型.所以我需要扩展web项目以使用crossProject分割成js/jvm/shared部分.但我不确定实现这一目标的最佳方法.如果我尝试做类似的事情:

lazy val web = crossProject.
  settings(commonSettings: _*).
  settings(...
).jsSettings(...
).jvmSettings(...
).dependsOn(core)
Run Code Online (Sandbox Code Playgroud)

我的build.scala出现了编译错误:

... 类型不匹配; [error] found:sbt.Project [error] required:org.scalajs.sbtplugin.cross.CrossClasspathDependency [error] lazy val web = crossProject.settings().jsSettings().jvmSettings().dependsOn(core)[error]
^

Mik*_*yer 3

省略 web 项目的dependsOn。

lazy val webJS = web.js.dependsOn(...)
Run Code Online (Sandbox Code Playgroud)

这对我来说是个窍门。