SBT - 根据任务观察不同来源

时间:2017-07-14 15:27:37

标签: sbt scala.js

在跨Scala JS服务器/客户端项目中,我希望更改某些源以重新启动服务器和其他源以触发打包过程,但不重启。不同的任务无济于事,因为他们只会做一个或另一个,我同时想要两个。

更详细: 我有一个Scala.js crossProject。我正在使用以下内容来确保服务器可以提供内置的JavScript:

val app = crossProject.settings(...)
lazy val appJS = app.js
lazy val jsFile = fastOptJS in(appJS, Compile)
lazy val appJVM = app.jvm.settings(
  (resources in Compile) += jsFile.value.data,
  (resources in Compile) += jsFile.value.data.toPath.resolveSibling(jsFile.value.data.name+".map").toFile,
  (resources in Compile) += (packageJSDependencies in(appJS, Compile)).value
)

如果我运行~ appJVM/compile:packageBin::packageConfiguration,则会立即编译对JavaScript源的更改并将其放在appJVM目标/ classes目录中,因此刷新浏览器会获得我的新代码 - 非常棒。

但是,如果我编辑服务器端代码,我还想使用sbt-revolver插件重启服务器。但是有一点 - 如果我使用~ ;appJVM/compile:packageBin::packageConfiguration;appJVM/reStart然后更改到客户端源重新启动服务器,我不想要。但是,如果我从传递表中删除客户端项目,那么如果我更改客户端项目则不再注意到。

有没有办法按每个任务不同地定义watchTransitiveSources?

2 个答案:

答案 0 :(得分:0)

您确定使用的是private async void btnDeleteContact_Click(object sender, RoutedEventArgs e) { StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Contacts.xml"); XDocument xdoc = XDocument.Load(file.Path); if (lstBox.SelectedIndex != -1) { xdoc.Element("Contacts") .Elements("Contact") .Where(x => (string)x.Element("ID") == lstBox.SelectedItem.ToString()).Remove(); //lstBox.SelectedIndex = -1; updateXMLFile(xdoc); //lstBox.Items.Clear(); //Causing catastrophic error loadContacts(); } } 而不是sbt-resolver吗?

因为第二个允许使用

控制sbt-revolver资源
  • triggered - 定义单个项目的文件 监控变化。默认情况下,项目会监视资源和 Scala和Java资源。
  • watchSources - 然后结合了 watchTransitiveSources表示当前项目以及所有执行和类路径 依赖关系(有关interProject的详细信息,请参阅.scala build definition) 依赖)。

来源:http://www.scala-sbt.org/0.13/docs/Triggered-Execution.html

答案 1 :(得分:0)

~实际上是一个命令,它监视基础项目的传递源,然后在重新运行原始输入(包括〜)之前,同步运行作为参数传递的所有内容。它没有提供有关那些命令行输入可用更改的信息(很难看到它如何)。

因此,我遇到的解决方案是编写一个新的监视命令。它还需要观察所有来源,但有条件地根据哪些文件已更改来选择做什么。

我已经把一些丑陋的东西搞砸了,但是它会让它变得更加清晰,通用,经过测试和插件。但是,与此同时,任何试图遵循我的路径的人都可以使用这个公开要点:https://gist.github.com/LeisureMonitoringAdmin/0eb2e775e47b40f07d9e6d58d17b6d52