根据帖子提示解释basics of migrating to scalajs和this page关于cross-compilations的提示,我决定通过执行以下更改将交叉编译添加到我的独立无依赖scala库:< / p>
project/plugins.sbt
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.16")
scalaVersion in ThisBuild := "2.11.8"
中添加了build.sbt
,因为只有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
总是成功完成,但不会重新生成文件。
答案 0 :(得分:0)
好的,我自己找到了解决方案。
我需要从构建中删除publishLocal := {}
,现在所有依赖于我的库的项目都能正常工作。