同一構建中的多個專案(子專案)
有時,構建會合並多個源目錄,每個源目錄都是自己的專案。例如,你可能有這樣的構建結構:
projectName / build.sbt project / src / main / … test / … core / src / main / … test / … webapp / src / main / … test / …
在上面的專案中,projectName/src
中的程式碼被認為是 root
專案。還有另外兩個模組,或子專案,core
和 webapp
。
配置子專案與配置根專案類似,只是在專案中指定了子目錄。此示例顯示聚合 core
和 webapp
專案的根專案。
lazy val root = (project in file(".")).aggregate(core,webapp).dependsOn(core, webapp)
lazy val core = (project in file("core"))
lazy val webapp = (project in file("webapp")).dependsOn(core)
傳遞給 file()
的值是相對於專案根目錄的目錄。
webapp
專案取決於 core
專案,該專案由 dependsOn
子句指示,該專案採用上面一行中指定的 core
值。dependsOn
和 lazy
評估確保在專案使用它們之前可以使用依賴項。在這種情況下,webapp
依賴於 core
,因此 core
將在構建嘗試編譯 webapp
之前編譯。
aggregate
使一個專案中定義的任務可用於聚合它的專案。例如,在 root
專案中執行 compile
也將在 core
和 webapp
中執行 compile
。