我正在嘗試使用SBT的配置將相關性範圍限定在同一個項目中的模塊。模塊間依賴關係取決於SBT中可能的配置?
在生產中,此類依賴關係由類路徑上的jar滿足,但在dev中,執行server/config-a:run
或server/config-b:run
以手動選擇依賴關係會很好。
目前,我有這樣的事情:
lazy val configA = config("config-a") extend Runtime
lazy val configB = config("config-b") extend Runtime
lazy val DevConfigA = Project(id = "dev-config-a", base = file("dev-config-a"))
lazy val DevConfigB = Project(id = "dev-config-b", base = file("dev-config-b"))
lazy val server = Project(id = "server",
base = file("server"),
dependencies = Seq(common))
.configs(configA, configB)
.dependsOn(DevConfigA % configA, DevConfigB % configB)
DevConfigA和DevConfigB帶來用於配置資源。我們希望其中的一個被加載。目標是server/config-a:run
將取決於DevConfigA模塊,而不取決於DevConfigB。
我不得不將configs
和dependsOn
從呼叫移到Project.apply
才能編譯它。之後,DevConfig*
依賴關係不會顯示出來,當我server/config-a:run
或如果我打電話show server/config-a:dependency-classpath
。
有沒有辦法使模塊間的依賴依賴於配置?
無論如何做到這一點與模塊依賴關係,而不是librarydependences?在我的例子中,DevConfigA和DevConfigB是其他子模塊。 – EvilRyry
您能否在您的問題中添加子模塊的定義?當你使用'DevConfigA%configA'時,它意味着'compile-> configA',這意味着來自'DevConfigA'的編譯範圍庫最終成爲'configA'範圍的庫。這是你在追求什麼? –