Как сделать задачу компиляции scalatra зависимой от задачи scala.js packageJS в sbt?

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

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня есть проект scalatra, в котором я хочу использовать JavaScript, созданный на основе проекта scala.js.

У меня есть многопроектная сборка sbt, которая позволяет мне успешно построить оба этих проекта.То есть я могу использовать задачи компиляции (и запуска) в проекте scalatra;и я могу использовать задачу packageJS в проекте scala.js.

Однако мне бы очень хотелось, чтобы задача компиляции scalatra зависела от задачи scala.js packageJS;поэтому, когда проект Scalatra компилируется, Javascript автоматически генерируется в проекте Scala.js.

В моем многопроектном файле build.sbt я пробовал:

lazy val wwwjs = project // Scala.js project

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

Но при компиляции проекта Scalatra происходит сбой с сообщением «конфигурация не найдена в wwwjs#wwwjs_2.10;0.1:«пакетJS».Это требовалось при компиляции www#www_2.10;0.1".

Я новичок в sbt (а также в Scalatra и Scala.js!) — может ли кто-нибудь просветить меня, как это сделать?

Спасибо :)

Это было полезно?

Решение

Здесь вам нужна не зависимость между проекты (который является то, что dependsOn в проекте есть), но между tasks.

Я не знаком со Scalatra, но с точки зрения sbt она должна быть очень похожа на Play, и у нас есть успешный шаблон для проектов Play с Scala.js здесь:https://github.com/vmunier/play-with-scalajs-example/blob/master/project/Build.scala

В частности, я получил следующую базовую адаптацию из вашей сборки выше:

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

В качестве альтернативы используйте fullOptJS вместо fastOptJS для полностью оптимизированной версии (но каждый раз, когда вы вносите изменения, перестройка занимает несколько секунд).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top