2017-02-09 83 views
0

我想從作爲項目組成部分的文件(我目前已將它們放在資源目錄中,但這不是要求)中生成源文件。如何從SBT中的資源(或其他項目文件)創建源文件

這是我在它的嘗試:

sourceGenerators in Test += (sourceManaged in Test map { src => 
    (unmanagedResourceDirectories in Test).value map { dir => 
    val file = dir/"demo"/src.name 
    IO.write(file, "Prefix---" + IO.read(src) + "---Postfix") 
    file 
    } 
}).taskValue 

這給了我一個錯誤:

 
error: Illegal dynamic dependency 
(unmanagedResourceDirectories in Test).value map { src => 

什麼是做這種正確的方法是什麼?

回答

1

發生了什麼,最終的工作是這樣的(由this code啓發,在註釋中引用的一個問題SBT sourceGenerators task - execute only if a file changes):

sourceGenerators in Test += Def.task { 
    val sources = (unmanagedResources in Test).value filter (_.isFile) 
    val dir = (sourceManaged in Test).value 
    sources map { src => 
    IO.write(dir/src.name, "Prefix---" + IO.read(src) + "---Postfix") 
    f 
    } 
}.taskValue 

的重要的部分是讀取任務內的設置。

相關問題