2011-10-10 116 views
6

我是新來的整個SBT和Scala場景,並試圖建立一個使用Java/Scala類和Hibernate的項目。我得到的項目建設良好 - 我只需要手動將我的休眠配置文件複製到我的target/scala<version>/classes文件夾,以便它們可以通過休眠來拾取。在編譯期間創建SBT任務來複制目錄?

有沒有辦法在SBT中創建一個任務,以便在每次編譯時複製這些文件夾?這是我的Build.scala文件:

import sbt._ 

object Sportsbook extends Build { 
    lazy val project = Project (
    "sportsbook", 
    file("."), 
    copyConfigTask 
) 

    val copyConfig = TaskKey[Unit]("copy", "Copy hibernate files over to target directory") 

    /* 
    // Something like this 
    lazy val copyConfigTask = copyConfig <<= 
    val configDir1 = baseDirectory/"config" 
    val configDir2 = outputPath/"config" 
    IO.copyDirectory(configDir1, configDir2) 
    */ 
} 

回答

12

的最直接手段實現這一目標是將文件移動到./src/main/resources/config

或者,將${base}/config添加到resourceDirectories in Compile

resourceDirectories in Compile <+= baseDirectory/"config" 

不幸的是,那裏的文件會被複制到類路徑的根目錄。您需要將它們移動到./src/config/config才能恢復。 (請參閱mappings對資源的瞭解如何based on the relative location of resource files to the base resource directories

是否希望將文件打包到JAR中?這兩個答案都會導致這種情況。你可以將它們從mappings in packageBin中取出來避免這種情況。

mappings in (Compile, packageBin) ~= (_.filter { case (file, outpath) => outpath.startsWith("/config")}) 
+0

謝謝 - 我剛剛第一次去。出於某種原因,我僅將我的頭部資源與僅有的jar文件鏈接起來。這種方式更簡單。 – user988427

+0

@ user988427你可以批准答案,因爲它適用於你? –

相關問題