Après les conseils du poste expliquant la basics of migrating to scalajs et this page à propos cross-compilations, j'ai décidé d'ajouter compilation croisée à ma bibliothèque autonome scala sans dépendance en faisant les modifications suivantes:Après la bibliothèque migration vers scalajs, publier local ne fonctionne pas
- J'ai ajouté un fichier
project/plugins.sbt
avec le contenu
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.16")
- J'ai ajouté
scalaVersion in ThisBuild := "2.11.8"
dansbuild.sbt
parce que d'autrescalaVersion
utilisait2.10
J'ai également ajouté dans le build.sbt
le contenu suivant pour faire en sorte que je peux garder la même structure de répertoire, puisque je n'ai pas certains fichiers pour la machine virtuelle Java ou pour 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
Mais maintenant, après avoir publié le projet localement en utilisant sbt publish-local
les projets dépendant de cette bibliothèque ne fonctionnent plus, c'est-à-dire qu'ils ne voient pas les classes que cette bibliothèque offrait et provoquaient des erreurs. J'ai regardé dans .ivy2/local/.../foo/0.1/jars
et le JAR est passé de 1 Mo à 1 Ko, donc les erreurs ont un sens. Cependant, comment puis-je m'assurer que le fichier jar JVM est compilé correctement?
D'autres informations
Le temps de pot ne change pas plus, il semble qu'il y avait eu des miscompilation. J'ai supprimé le cache .ivy2
, mais maintenant sbt publish-local
se termine toujours avec succès mais ne régénère pas les fichiers.