Comment faire scalatra compiler tâche dépendent scala.js packageJS tâche dans sbt?

StackOverflow https://stackoverflow.com//questions/23023026

  •  21-12-2019
  •  | 
  •  

Question

J'ai un scalatra projet dans lequel je veux me servir du JavaScript qui a été généré à partir d'un scala.js projet.

J'ai un multi-projet sbt build qui me permet de construire à la fois de ces projets avec succès.C'est, je peux utiliser la compilation (et exécuter) des tâches dans le scalatra projet;et je peux utiliser le packageJS tâche dans le scala.js projet.

Cependant, j'aurais beaucoup aimé être en mesure d'avoir la scalatra de la compilation de la tâche dépend de la scala.js packageJS tâche;ainsi, lorsque le Scalatra projet est compilé, le code Javascript est généré automatiquement dans le Scala.js projet.

Dans mon multi-projet de construction.sbt fichier j'ai essayé:

lazy val wwwjs = project // Scala.js project

lazy val www = project // Scalatra project
  .dependsOn(wwwjs % "compile->packageJS")

Mais lors de la compilation de la Scalatra ce projet échoue avec "configuration n'est pas trouvé dans wwwjs#wwwjs_2.10;0.1:'packageJS'.Il a été nécessaire de www#www_2.10;de 0,1 compiler".

Je suis assez nouveau dans sbt (et Scalatra et Scala.js!) - quelqu'un peut-il m'éclairer sur comment faire cela?

Merci :)

Était-ce utile?

La solution

Ce que vous voulez ici n'est pas une dépendance entre projets (qui est ce que dependsOn sur un projet), mais entre tasks.

Je ne suis pas familier avec Scalatra, mais pour le sbt côté, il devrait être très similaire à Jouer, et nous avons un modèle de réussite pour Jouer à des projets avec Scala.js ici:https://github.com/vmunier/play-with-scalajs-example/blob/master/project/Build.scala

En particulier, je retire la suite de base à l'adaptation de votre build ci-dessus:

import scala.scalajs.sbtplugin.ScalaJSPlugin._ // if Build.scala
import ScalaJSKeys._

lazy val wwwjs = project // Scala.js project

lazy val www = project // Scalatra project
  .settings(
    compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (wwwjs, Compile))
  )

Vous pouvez également utiliser fullOptJS au lieu de fastOptJS pour la version optimisée (mais qui prend quelques secondes pour reconstruire à chaque fois que vous apportez une modification).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top