你可以聲明從富源的依賴通過一個項目參考:
import sbt._
object FooBuild extends Build {
lazy val root = Project(
id = "foo",
base = file(".")
) dependsOn(theBarBuild)
lazy val theBarBuild = ProjectRef(
base = file("/path/to/bar"),
id = "bar")
}
這應該也重新編譯吧(如果它已經改變),每當你編譯Foo。請注意項目引用的id
必須與Bar項目的實際ID匹配,這可能類似於例如如果使用簡單的構建定義(僅限.sbt
文件),則爲default-edd2f8
。
此技術對插件特別有用(請參閱我的blog post關於此主題)。
編輯:
你可以種重新像這樣的代碼結帳行爲:
import sbt._
object FooBuild extends Build {
lazy val root = addCheckouts(Project(id = "foo", base = file(".")))
def addCheckouts(proj: Project): Project = {
val checkouts = proj.base.getCanonicalFile/"checkouts"
if (! checkouts.exists) proj
else proj.dependsOn(IO.listFiles(DirectoryFilter)(checkouts).map { dir =>
ProjectRef(base = dir, id = dir.name): ClasspathDep[ProjectReference]
}:_*)
}
}
這將檢查項目目錄的checkouts
目錄,如果它存在,增加了目錄(應該是其他項目的符號鏈接)作爲項目的項目引用。它期望符號鏈接被命名爲鏈接項目的實際ID(例如default-edd2f8
或bar
)。如果該目錄不存在,那麼構建就像以前一樣工作。
在簽出目錄(或目錄本身)中添加或刪除符號鏈接時,必須重新加載Foo項目以獲取更改。
希望這會有所幫助。
在一個終端(BAR)'''〜publish-local'''中。在另一個終端(FOO)中'''重新加載; compile'''。完全未經測試。 –