3

最後のコンパイル以降のタイムスタンプに関係なく、「コンパイル」タスクを発行するたびに、SBT がすべてのソース ファイルをコンパイルすることを確認しました。以下は私のbuild.sbtファイルです:

name := "HelloSbt"

scalaVersion := "2.8.2"

unmanagedSourceDirectories in Compile := List(file("src"))

以下は私のプロジェクト構造です(プロジェクトとターゲットディレクトリは無視されます):

./src
./src/Hello1.scala
./src/a
./src/a/Hello2.scala
./build.sbt

2 つのソース ファイルは、テスト用の単なる空のオブジェクト定義です。

「sbt compile」と入力すると、次の情報が得られました。

[info] Compiling 2 Scala sources to...

そして、ターゲットディレクトリに新しくコンパイルされたクラスファイルを見つけることができます.

ソース ファイルを変更せずに、1 分後にもう一度「sbt compile」と入力すると、クラス ファイルのタイム スタンプが最新であることを除いて、同じ情報とクラス ファイルが得られました。2 回目のコンパイルでは変更されたソース ファイルが見つからず、コンパイルが行われないことを期待していました。

Windows 7 と Debian の両方でテストを行いました。テスト中、エディタは開いていませんでした。最後のビルド以降に変更されたファイルのみをコンパイルしながら、カスタマイズされた src ディレクトリをセットアップする方法についてヒントを与えることができますか?

ありがとう

4

1 に答える 1

1

これは、相対パスを絶対パスのように使用しているためです。結果が得られることにも驚いていますが、とにかく、次のように書く必要があります。

unmanagedSourceDirectories in Compile <<= baseDirectory(base => List(base / "src"))
于 2012-05-16T05:49:55.193 に答える