【发布时间】:2017-05-22 17:52:02
【问题描述】:
按照解释basics of migrating to scalajs 和this page 关于cross-compilations 的帖子的提示,我决定通过以下更改将交叉编译添加到我的独立无依赖项scala 库中:
- 我添加了一个文件
project/plugins.sbt,内容为addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.16") - 我在
build.sbt中添加了scalaVersion in ThisBuild := "2.11.8",因为否则只是scalaVersion正在使用2.10
我还在build.sbt 中添加了以下内容,以确保我可以保持相同的目录结构,因为我没有针对 JVM 或 Javascript 的任何特定文件:
lazy val root = project.in(file(".")).
aggregate(fooJS, fooJVM).
settings(
publish := {},
publishLocal := {}
)
lazy val foo = crossProject.crossType(CrossType.Pure).in(file(".")).
settings(version := "0.1").
jvmSettings(
// Add JVM-specific settings here
).
jsSettings(
// Add JS-specific settings here
)
lazy val fooJVM = foo.jvm
lazy val fooJS = foo.js
但是现在,在我使用 sbt publish-local 在本地发布项目后,依赖于该库的项目不再工作,即他们看不到该库提供的类并引发错误。
我查看了.ivy2/local/.../foo/0.1/jars,JAR 从 1MB 变为 1KB,所以错误是有道理的。
但是,如何确保正确编译 JVM jar 文件?
更多信息
jar 时间不再变化,看起来好像有一些错误编译。我删除了.ivy2 缓存,但现在sbt publish-local 总是成功完成,但不会重新生成文件。
【问题讨论】:
标签: scala cross-compiling scala.js