2013-08-06 38 views
6

我有一個SBT項目,特別是一個Play Framework 2.1項目,有一些子項目在配置中指定。編譯時依賴關係似乎很好,但「乾淨」似乎只清理當前選定的項目,不包括它的依賴關係。有沒有辦法清理選定的項目及其相關的子項目?運行「乾淨」所有從屬SBT子項目

+2

我不希望乾淨,以清除所有依賴項。你可能想要一個聚合? (只是谷歌SBT聚合) –

回答

6

如果你的主要項目彙總科目,像這樣:

lazy val root = Project("name", file(".")) 
    .aggregate(module1, module2, macros) 

然後叫上這根項目的任何命令將所有子項目執行。如果您在SBT會議呼叫inspect clean命令,你會看到,在相關章節內容涉及對這種清潔

在旁註中評論所有子項目

aggregatedependsOn是不同的不同的命令目的。 彙總的目的是運行在根項目上調用的命令。在我的示例中,通過在我的根項目上調用test命令,此命令也將被執行,還可用於module1module2macros。如果你想關閉這種行爲與以下設置:

aggregate in test := false 

彙總項目是獨立於它們的代碼。它通常用於根項目,例如,不要在每個項目上調用test,而要在根上調用它。請記住,如果彙總命令將並行執行。

dependsOn表示您的項目將取決於其他項目的代碼。並且在這種情況下SBT會執行命令序列化,爲了compile你的根項目,其中dependsOn的一些模塊,它應該在第一步編譯這些模塊的根項目。

+0

在旁註,如果我使用.aggregate,我仍然需要.dependsOn?當我使用聚合替換dependsOn時,我在聚合項目中出現了一些編譯錯誤,看起來好像它們都是並行編譯的。 –

+0

@BenDilts我在你的旁註中加了一些解釋 – 4lex1v