ScalaJS交叉编译项目的SBT类路径依赖

ijxebb2r  于 2023-01-05  发布在  Scala
关注(0)|答案(1)|浏览(192)

我有两个不同的独立项目A和B,它们都使用ScalaJS默认方式连接交叉编译项目(请参见此处:https://www.scala-js.org/doc/project/cross-build.html)。
现在,我想以类似于下面的方式添加一个从B到A的SBT类路径依赖:

projectA.dependsOn(projectB)

其中,项目B的js部分可以使用项目A的jsshared部分,而jvm部分可以访问项目A的jvmshared部分。
由于我使用upickle来序列化数据,因此不能将libraryDependeny与项目A的publishLocal一起使用(因为upickle需要项目A的编译时信息)。
我该如何解决这个问题?

w1e3prcc

w1e3prcc1#

对于同一版本中的CrossProject,您可以简单地使用.dependsOn

lazy val a = crossProject
lazy val b = crossProject.dependsOn(a)

// snip aJS, aJVM, bJS, bJVM

目前,还没有办法像RootProject那样从URI / File导入CrossProject。然而,CrossProject只不过是两个普通的sbt项目。您可以分别导入它们:

// a.sbt

lazy val a = crossProject
lazy val aJS = a.js
lazy val aJVM = a.jvm

// b.sbt

lazy val b = crossProject.
  jsConfigure(_.dependsOn(aJS)).
  jvmConfigure(_.dependsOn(aJVM))

lazy val aJS = ProjectRef(file("projectA"), "aJS")
lazy val aJVM = ProjectRef(file("projectA"), "aJVM")

请注意,我们似乎没有理由不能创建一个CrossProjectRef来将其抽象化,所以如果您经常需要它,请随时访问open an issue,以便我们可以更详细地了解它。

相关问题