Come rendere il compito di compilazione SCALATRA dipende da Scala.js Packagejs Task in SBT?

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

  •  21-12-2019
  •  | 
  •  

Domanda

Ho un progetto Scalatra entro il quale voglio servire JavaScript che è stato generato da un progetto Scala.js.

Ho una build SBT multi-progetto che mi consente di costruire con successo questo progetto. Cioè, posso utilizzare le attività di compilazione (e run) nel progetto Scalatra;E posso usare l'attività dei pacchetti nel progetto Scala.js.

Tuttavia, mi piacerebbe molto essere in grado di avere il compito di compilazione Scalatra dipende dal compito di Scala.js Packagejs;Quindi, quando il progetto Scalatra è compilato, il JavaScript viene generato automaticamente nel progetto SCALA.JS.

Nel mio file build.sbt multi-progetto che ho provato:

lazy val wwwjs = project // Scala.js project

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

Ma quando si compila il progetto Scalatra questo fallisce con "Configurazione non trovata in wwwjs # wwwjs_2.10; 0.1: 'packagejs'. È stato richiesto da www # www_2.10; 0,1 compilazione".

Sono abbastanza nuovo a SBT (e Scaratra e Scala.js!) - Qualcuno può illuminarmi su come fare questo?

Grazie :)

È stato utile?

Soluzione

Quello che vuoi qui non è una dipendenza tra progetti (che è ciò che dependsOn su un progetto) ma tra tasks.

Non ho familiarità con Scatratra, ma per il lato SBT dovrebbe essere estremamente simile a giocare, e abbiamo un modello di successo per i progetti di gioco con Scala.js qui: https://github.com/vmunier/play-with-scalajs-esempio / blob / master / progetto / build.scala

In particolare, derivo il seguente adattamento di base dalla tua build sopra:

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))
  )
.

In alternativa, utilizzare fullOptJS invece di fastOptJS per la versione completamente ottimizzata (ma richiede diversi secondi per ricostruire ogni volta che si cambia).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top