2017-03-01 29 views
0

使用SBT 0.13.13,我們的構建定義是從舊項目繼承而來的。目前有一個build.sbt和一些project/*。scala文件。這些scala文件遵循相同的模式。這裏有一個例子:將build.sbt與項目* .scala文件混合在一起:都應該在build.sbt中統一?

import sbt._ 
import sbt.Keys._ 

object Docs { 
    lazy val docTask = TaskKey[Unit]("docPackage", "Generate Scaladoc") 

    lazy val settings = Seq(
    docTask := { 
     val docs = (doc in Compile).value 
     IO.copyDirectory(docs, new java.io.File("src/main/resources/myapp-scaladoc"), overwrite = true) 
    }, 

    docTask := (docTask.dependsOn(doc in Compile)).value 
) 
} 

Appendix: .scala build definition

在SBT的早期版本中,.scala是創建 多項目構建定義

問題的唯一途徑 :我想這意味着使用單獨的項目/ *。scala文件是不鼓勵的。如果是這樣,可以移動這些* .scala文件的代碼並將它們全部放入build.sbt中?

回答

0

project/中的代碼與build.sbt中的代碼之間幾乎沒有功能差異。

將代碼放在project/.scala文件中的好處是,它中的所有符號都將導入到您構建的所有子項目中的所有build.sbt文件的命名空間中。這意味着輔助方法,常量,插件或其他Scala代碼可以位於一個位置,但可以從任何地方調用。

最終,是否要使用此功能取決於您是希望在單個位置還是在多個位置配置共享項目。

如果您希望將項目設置完全配置在其子項目目錄中的單獨build.sbt文件中,請將共享設置放入project/文件夾中即可。

如果您可以在根文件build.sbt中配置共享設置(或者如果您未使用任何子項目文件build.sbt),則可以將所有共享配置合併到其中。

相關問題