2015-05-15 76 views
0

在.sbt文件中,我經常從自述文件複製粘貼的行,其中我不知道我在做什麼。一個例子是,加入SBT-左輪手槍後plugins.sbt,寫入行裸線自己做什麼?

Revolver.settings 

我的這樣做是奇蹟般地將re-startre-stop命令SBT目前的理解。我已經明白,.sbt文件中的一行實際上並不會執行魔術,而是創建一個鍵並將值與它關聯起來。

這樣的行集合和哪些值有什麼關鍵? .scala構建定義中的等價語句是什麼?

回答

1

*.sbt文件可以採取裸露DslEntry其中包括Setting[T]Seq[Setting[T]]

類似someString := "a"someSeq += "b"的表達式是針對特定T類型的Setting

這些設置雖然是值,但它們定義了構建的不同部分的轉換(更改,添加,附加等),這些部分被摺疊到構建狀態和結構中。

在你的例子中Revolver.settingsSeq[Setting[_]]它定義了使用sbt-revolver的默認設置。


如果在project/*.scala設置它,你需要將其分配到根項目,這可以是:

  • 在構建
  • 聚合所有其他項目的唯一項目(子)項目。

因此,它會看起來像:

import sbt._, Keys._ 

object Build extends Build { 
    val bippy = project in file(".") settings Revolver.settings 
} 
+0

謝謝。這條線在scala中看起來像什麼? – Martijn

+0

@Martijn你是對的,更新。 –

+0

因此,當sbt發現一個暗含'DslEntry'的裸表達式時,會將該設置應用於根項目上的'settings'方法,並將返回的項目設置爲根項目? – Martijn