gpt4 book ai didi

sbt - 如何使scalatra编译任务依赖于sbt中的scala.js packageJS任务?

转载 作者:行者123 更新时间:2023-12-02 02:39:09 26 4
gpt4 key购买 nike

我有一个 scalatra 项目,我想在其中提供从 scala.js 项目生成的 JavaScript。

我有一个多项目 sbt 构建,可以让我成功构建这两个项目。也就是说,我可以使用scalatra项目中的编译(和运行)任务;我可以在 scala.js 项目中使用 packageJS 任务。

但是,我非常希望能够让 scalatra 编译任务依赖于 scala.js packageJS 任务;因此,当编译 Scalatra 项目时,Scala.js 项目中会自动生成 Javascript。

在我的多项目 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 中找不到配置:'packageJS'。需要从 www#www_2.10;0.1 编译”。

我对 sbt(以及 Scalatra 和 Scala.js!)相当陌生 - 谁能启发我如何做到这一点?

谢谢:)

最佳答案

这里您想要的不是项目之间的依赖关系(这就是项目上dependsOn所做的),而是任务之间的依赖关系。

我不熟悉 Scalatra,但对于 sbt 方面来说,它应该与 Play 非常相似,我们在这里有一个使用 Scala.js 的 Play 项目的成功模板: 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 来获得完全优化的版本(但每次进行更改时都需要几秒钟的时间来重建)。

关于sbt - 如何使scalatra编译任务依赖于sbt中的scala.js packageJS任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com