2016-03-26 6 views
7

どのように私はいくつかのソースファイルをコピーすることができます(例えば/src/main/html/*.html)SBTとビルド出力ディレクトリ(例:/target/scala-2.11/)にファイルがターゲットルートで終わるようにしていない私が追加した場合、何が起こるかであるclassesサブディレクトリ(中ソースディレクトリunmanagedResourceDirectories)?SBTを使っていくつかのファイルをビルドターゲットディレクトリにコピーするには?

答えて

6

あなたはディレクトリをターゲットにするのsbtタスクのコピーリソースを定義することができます。

lazy val copyRes = TaskKey[Unit]("copyRes") 

lazy val root:Project = Project(
    ... 
) 
.settings(
    ... 
    copyRes <<= (baseDirectory, target) map { 
    (base, trg) => new File(base, "src/html").listFiles().foreach(
     file => Files.copy(file.toPath, new File(trg, file.name).toPath) 
    ) 
    } 
) 

とSBTでこのタスクを使用します。

sbt clean package copyRes 
+0

ファイルのインポートは何ですか?また、baseDirectoryに関連するディレクトリを表す文字列として "target"をハードコードしようとしましたが、これは動作していないようです。 – bbarker

+1

java.nio.file.Files – Nyavro

+0

また、これはおそらく再帰的ではないことに注意してください。 'File.listFiles'は直接子孫のみを返します。 – VasyaNovikov

関連する問題