SBT类路径依赖与ScalaJS交叉编译项目
我有两个不同的独立项目A和B,它们都使用ScalaJS连接交叉编译项目的默认方式(请参见此处) 现在,我想以如下方式将SBT类路径依赖项从B添加到a:SBT类路径依赖与ScalaJS交叉编译项目,scala,sbt,cross-compiling,scala.js,Scala,Sbt,Cross Compiling,Scala.js,我有两个不同的独立项目A和B,它们都使用ScalaJS连接交叉编译项目的默认方式(请参见此处) 现在,我想以如下方式将SBT类路径依赖项从B添加到a: projectA.dependsOn(projectB) 其中,项目B的js部分可以使用项目A的js和shared部分,而jvm部分可以访问项目A的jvm和shared部分 当我使用upickle序列化数据时,我不能仅将librarydependency用于项目a的publishLocal(因为upickle需要关于项目a的编译时信息) 如何解
projectA.dependsOn(projectB)
其中,项目B的js
部分可以使用项目A的js
和shared
部分,而jvm
部分可以访问项目A的jvm
和shared
部分
当我使用upickle
序列化数据时,我不能仅将librarydependency
用于项目a的publishLocal
(因为upickle
需要关于项目a的编译时信息)
如何解决此问题?对于同一版本中的
交叉项目,您只需使用。dependsOn
:
lazy val a = crossProject
lazy val b = crossProject.dependsOn(a)
// snip aJS, aJVM, bJS, bJVM
目前,无法像RootProject
那样从URI/文件导入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
,将其抽象出来。因此,如果您经常需要它,请随意使用,这样我们就可以更详细地查看它。默认的。dependsOn
betweenCrossProject
应该正好提供这种行为。我可以从uri
构建CrossProject
(像普通根项目一样),以便从远程git repo中提取它吗?CrossProject的文档非常少,我还没有找到任何工厂方法/构造函数。CrossProject
是一个在build.sbt
中创建两个sbt项目的工厂,一个用于JVM,一个用于JavaScript,同时共享一些设置和其他定义。在这一点上,没有从远程存储库中提取数据。您能澄清一下您想做什么吗?项目A和项目B不共享目录结构,这意味着它们在磁盘(或不同的远程git存储库)上是分开的。问题归结为如何从文件
或Uri
创建交叉项目
,就像可以从这两种引用构建根项目一样。