5

ディレクトリにファイルを保存するたびにビルド タスクをトリガーするように、watchedSources 設定にディレクトリを追加したいと考えています。

override def baseProject = play.Project(
  moduleName,
  moduleVersion,
  dependencies = libraries,
  path = file(location),
  settings = moduleSettings ++ Seq(
    watchSources <++= baseDirectory map { dir =>
      Seq(
        dir / "src/main/javascript"
      )
    }
  )
)

次のエラーを回避できないようです。

type mismatch;
[error]  found   : sbt.Project.Initialize[ScalaObject with Equals]
[error]  required: sbt.Project.Initialize[sbt.Task[?]]
[error] Note: ScalaObject with Equals >: sbt.Task[?], but trait Initialize is invariant in type T.
[error] You may wish to define T as -T instead. (SLS 4.5)
[error]     watchSources <++= baseDirectory { f =>
[error]                                     ^
[error] one error found
[error] (compile:compile) Compilation failed
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

監視対象ソース タスクの結果に一連のファイルを追加するにはどうすればよいですか?

4

2 に答える 2

2

Play プロジェクトで非常によく似た問題が発生しました。すべての JavaScript ファイルへの変更について、 ( Jasmineテストを含む)public/jsだけでなくSBT にも監視してもらいたいです。test/js

解決策は、SBT Path Finder式を使用して、次のように場所を指定することです。

val main = play.Project(appName, appVersion, appDependencies, settings = Defaults.defaultSettings ++ buildInfoSettings ++ scctSettings).settings(
testOptions in Test += Tests.Argument("junitxml", "console"),
unmanagedResources in Compile ++= (file("public/js") ** "*.js").get,
unmanagedResources in Test ++= (file("test/js") ** "*.js").get,
...

Path Finder はこのビットです: (file("public/js") ** "*.js")- それを呼び出すgetと が返されSeq[File]、これを に追加しますunmanagedResources(これは監視対象のソースと見なされますが、理想的な Scala ではありません)。

于 2013-07-26T04:43:19.017 に答える