SBT在jar中包含一个二进制文件

Jus*_*s12 1 java scala sbt

我正在使用一个外部Maven项目,其中生成的jar包含一个二进制文件,foo/bar/file.dat其源中的确切路径为src/main/foo/bar/file.dat。由于某种原因需要此文件,否则代码将引发异常。

我试图将其转换为SBT项目,但文件未包含在jar中。

我尝试添加includeFilter in Compile := "parser.dat",但这给了我一个错误:

IO error while decoding .../src/main/foo/bar/file.dat with UTF-8: MALFORMED[1]
Please try specifying another one using the -encoding option
Run Code Online (Sandbox Code Playgroud)

如何告诉SBT将“原样”文件包含在已编译的jar中?

编辑:链接的问题是无关的。该问题询问“如何正确读取资源?”,而我想知道“假设这是我必须读取资源的方式,那么如何正确创建jar?”。

我想按原样使用3rd party库,而无需更改代码。

Mar*_*lic 6

尝试mappings像这样将自定义文件添加到包中

mappings in (Compile, packageBin) += {
  (baseDirectory.value / "src" / "main" / "foo" / "bar" / "file.dat") -> "foo/bar/file.dat"
}
Run Code Online (Sandbox Code Playgroud)

sbt package现在执行应该会产生一个file.dat包含在内的罐子。