簡體   English   中英

在Scala SBT項目中使用靜態資產的正確方法是什么?

[英]What is the correct way of using static assets in a Scala SBT project?

在具有打包插件(例如sbt-assemblysbt-native-packager基於SBT的Scala項目中使用靜態資源的最佳方法是什么。

我們知道,通過將TypeSafe-Config與sbt-native-packager的通用插件一起使用,我們只需將配置文件放在sources下的resources目錄中即可。 但是,如果我希望我的應用程序具有其他靜態源,例如包含映射和模型的JSON文件,該怎么辦?

我知道我可以只引用資源目錄並從文件中讀取內容,但是在將應用程序與插件打包在一起后(在這種情況下假設使用通用插件或docker插件),這種方法仍然可以工作嗎?

如果沒有,實現此目標的正確方法是什么?

你可以用

unmanagedResourceDirectories += (baseDirectory in <project>).value / some / path

添加更多目錄,這些目錄以后作為靜態資源映射到jar中。

將其放入資源目錄,但不要“引用資源目錄並從文件中讀取”:而是使用ClassLoader.getResourceAsStream() (或getResources ,具體取決於您的要求)。 這與TypeSafe Config和其他庫使用的技術相同。 為此,是否使用sbt-native-packager沒有關系。

如果您需要專門將這些資源作為文件使用(例如,將其提供給外部進程),則此方法會遇到問題。 在這種情況下,將它們添加到mappings如圖所示在這里

mappings in Universal in packageBin += file("README") -> "README"

(顯然用您需要的文件替換"README" )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM