SBT 类路径依赖与 ScalaJS 交叉编译项目
SBT classpath dependency with ScalaJS crosscompile project
我有 2 个不同的独立项目 A 和 B,它们都使用 ScalaJS 默认方式连接交叉编译项目(参见此处:https://www.scala-js.org/doc/project/cross-build.html)。
现在我想以类似于此的方式添加从 B 到 A 的 SBT 类路径依赖项:
projectA.dependsOn(projectB)
其中项目 B 的 js
部分可以使用项目 A 的 js
和 shared
部分,而 jvm
部分可以访问 jvm
和shared
部分项目 A.
因为我正在使用 upickle
序列化我的数据,所以我不能只将 libraryDependeny
与项目 A 的 publishLocal
一起使用(因为 upickle
需要编译时信息关于我的项目 A)。
我该如何解决这个问题?
对于 CrossProject
在同一版本中,您可以简单地使用 .dependsOn
:
lazy val a = crossProject
lazy val b = crossProject.dependsOn(a)
// snip aJS, aJVM, bJS, bJVM
目前,无法像 RootProject
一样从 URI/文件导入 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.
configureJS(_.dependsOn(aJS)).
configureJVM(_.dependsOn(aJVM))
lazy val aJS = ProjectRef(file("projectA"), "aJS")
lazy val aJVM = ProjectRef(file("projectA"), "aJVM")
请注意,我们似乎没有理由不能创建一个 CrossProjectRef
从您那里抽象出来。因此,如果您经常需要它,请随时 open an issue 以便我们可以更详细地查看它。
我有 2 个不同的独立项目 A 和 B,它们都使用 ScalaJS 默认方式连接交叉编译项目(参见此处:https://www.scala-js.org/doc/project/cross-build.html)。
现在我想以类似于此的方式添加从 B 到 A 的 SBT 类路径依赖项:
projectA.dependsOn(projectB)
其中项目 B 的 js
部分可以使用项目 A 的 js
和 shared
部分,而 jvm
部分可以访问 jvm
和shared
部分项目 A.
因为我正在使用 upickle
序列化我的数据,所以我不能只将 libraryDependeny
与项目 A 的 publishLocal
一起使用(因为 upickle
需要编译时信息关于我的项目 A)。
我该如何解决这个问题?
对于 CrossProject
在同一版本中,您可以简单地使用 .dependsOn
:
lazy val a = crossProject
lazy val b = crossProject.dependsOn(a)
// snip aJS, aJVM, bJS, bJVM
目前,无法像 RootProject
一样从 URI/文件导入 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.
configureJS(_.dependsOn(aJS)).
configureJVM(_.dependsOn(aJVM))
lazy val aJS = ProjectRef(file("projectA"), "aJS")
lazy val aJVM = ProjectRef(file("projectA"), "aJVM")
请注意,我们似乎没有理由不能创建一个 CrossProjectRef
从您那里抽象出来。因此,如果您经常需要它,请随时 open an issue 以便我们可以更详细地查看它。