将库迁移到 scalajs 后,本地发布不起作用



根据解释迁移到 scalajs 的基础知识的文章和这个关于交叉编译的页面的提示,我决定通过执行以下更改将交叉编译添加到我的独立无依赖 scala 库中:

  • 我添加了一个包含内容
    的文件project/plugins.sbtaddSbtPlugin("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 文件正确编译?

更多信息

罐子时间不再改变,看起来有一些错误编译。我删除了.ivy2缓存,但现在sbt publish-local总是成功完成,但不重新生成文件。

好的,我自己找到了解决方案。

我需要从构建中删除publishLocal := {},现在所有取决于我的库的项目都可以正常工作。

最新更新