我有两个不同的独立项目A和B,它们都使用ScalaJS默认的交叉编译项目连接方式(参见这里:https://www.scala-js.org/doc/project/cross-build.html)。
现在我想以类似于这样的方式从B到A添加SBT Classpath Dependency:
projectA.dependsOn(projectB)
项目B的js
部分可以使用项目A的js
和shared
部分,jvm
部分可以访问jvm
和{{ 1}}项目A的部分。
当我使用shared
来序列化我的数据时,我不能只使用带有upickle
项目A的libraryDependeny
(因为publishLocal
需要有关项目的编译时信息在我的情况下)。
我该如何解决这个问题?
答案 0 :(得分:2)
对于同一版本中的CrossProject
,您只需使用.dependsOn
:
lazy val a = crossProject
lazy val b = crossProject.dependsOn(a)
// snip aJS, aJVM, bJS, bJVM
目前,无法从CrossProject
这样的URI /文件中导入RootProject
。但是,CrossProject
只不过是两个正常的sbt项目。您可以单独导入这些:
// a.sbt
lazy val a = crossProject
lazy val aJS = a.js
lazy val aJVM = a.jvm
// b.sbt
lazy val b = crossProject.
configureJS(_.dependsOn(aJS)).
configureJVM(_.dependsOn(aJVM))
lazy val aJS = ProjectRef(file("projectA"), "aJS")
lazy val aJVM = ProjectRef(file("projectA"), "aJVM")
请注意,似乎没有理由我们无法创建一个CrossProjectRef
来抽象远离你的东西。因此,如果您经常需要这样做,请随意open an issue,以便我们更详细地了解它。