编译前的SBT任务不会在触发编译中执行

时间:2014-11-05 18:17:34

标签: scala playframework playframework-2.0 sbt

this post中,我想我将学习sbt任务并自行创建。我已经达到了一个阶段,我已经创建了一个在编译之前运行并编译我的sass的任务。

val sassCompile = TaskKey[ Unit ]( "sassCompile" )

sassCompile := { 
  SassCompiler.compile( baseDirectory.value )
}

watchSources <++= baseDirectory map { path => ((path / "app" / "assets" ) ** "*.scss").get }

compile <<= (compile in Compile) dependsOn sassCompile

我做了两件事:

  1. 确保每次更改scss都会触发编译
  2. 编译之前,sass编译器运行
  3. 那么有效:

    1. 触发编译工作。每次我更改我的scala时,编译都会触发。 (通常的行为)。每次我在提到的路径中更改.scss:app / assets / **,编译触发器。一切都很好。
    2. 当我在播放控制台上手动输入编译时,sass编译也会触发,我可以看到css文件发生了变化。
    3. 什么不起作用:

      当自动触发编译时(通过调用~compat或〜运行然后进行更改(甚至不进行更改),sass编译不会被调用。所以当我玩〜运行时,我的sass编译器没有被调用。

      编辑:如果有帮助,here是一个类似的问题。

1 个答案:

答案 0 :(得分:3)

您需要将最后一行更改为:

compile in Compile <<= (compile in Compile) dependsOn sassCompile

对此的解释,您可以在“何时指定范围”部分中找到here