我在SBT中有一些設置,我需要在加載的插件執行一些副作用後生成值。 onLoad
掛鉤似乎是最好的選擇。掛鉤接收State
,轉換它並返回一個新的。使用State
方法可以很容易地安排命令,但更改設置似乎並不容易。如何在SBT中的onLoad掛鉤上應用設置更改?
我第一次嘗試下面的代碼,它失敗了,因爲它似乎導致onLoad
的遞歸調用和由於重複的演員名稱(可能是遞歸的產物)失敗。
onLoad in Global := (onLoad in Global).value andThen { state =>
val settings = generateMySettings
Project.extract(state).append(settings, state)
}
另一種選擇我看到的是調用State
本身直接put
或update
方法,但似乎相當難看,而且容易出錯。有更好的/更清潔的方式嗎?
我並沒有積極地參與我想要的項目,當時我只是設置了一個命令並在啓動時用'.sbtrc'運行了它。雙重加載有點煩人,但可以承受。這看起來好多了,接近我所問的,因爲它可能是可以實現的。如果我有機會,我一定會利用它。謝謝! – danielkza