在Scala SBT项目中使用静态资产的正确方法是什么?

在Scala SBT项目中使用静态资产的正确方法是什么?,scala,sbt,Scala,Sbt,在基于SBT的Scala项目中使用打包插件(如SBT assembly或SBT native packager)的静态资源的最佳方式是什么 我们知道,通过将TypeSafe配置与sbt native packager的通用插件一起使用,我们可以将配置文件放在sources下的resources目录中。但是,如果我希望我的应用程序具有其他静态源,例如包含映射和模型的JSON文件,该怎么办 我知道我可以直接引用resources目录并读取文件,但是在使用假定为universal或docker插件的插

在基于SBT的Scala项目中使用打包插件(如SBT assembly或SBT native packager)的静态资源的最佳方式是什么

我们知道,通过将TypeSafe配置与sbt native packager的通用插件一起使用,我们可以将配置文件放在sources下的resources目录中。但是,如果我希望我的应用程序具有其他静态源,例如包含映射和模型的JSON文件,该怎么办

我知道我可以直接引用resources目录并读取文件,但是在使用假定为universal或docker插件的插件打包应用程序后,这是否仍然有效

如果没有,正确的方法是什么?

您可以使用

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

添加更多稍后映射到jar中作为静态资源的目录。

将其放入资源目录,但不要引用资源目录并从文件中读取:而是使用或获取资源,具体取决于您的要求。这与TypeSafe配置和无数其他库使用的技术相同。为此,是否使用sbt native packager并不重要

如果您需要将这些资源专门作为文件提供(例如,将它们提供给外部流程),则此方法会遇到问题。在本例中,将它们添加到映射中,如图所示:

显然,用您需要的文件替换自述文件

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