您可以通过操作来获得所需的结果,mappings in (Compile, packageBin)
以包含您希望打包 jar 具有的文件(publish
使用来自的输出packageBin
)。这种技术将允许您在 jar 中包含您想要的任何文件。官方 sbt 文档在这里:http ://www.scala-sbt.org/0.12.3/docs/Howto/package.html#contents
例如,考虑在 jar 中包含 .properties 文件的常见情况。假设您需要在打包的 jar 中的路径“com/bigco/messages.properties”下包含“messages.properties”。假设该文件位于 src/main/scala/ 下...您可以将以下内容添加到 build.sbt 中:
mappings in (Compile, packageBin) <+= baseDirectory map { base =>
(base / "src" / "main" / "scala" / "com" / "bigco" / "messages.properties") -> "com/bigco/messages.properties"
}
要尝试回答您的原始问题,您可以根据正确的包路径解压缩foo.jar
并将其中的每个文件添加到打包的 jar 中。class
所以类似于
mappings in (Compile, packageBin) <+= baseDirectory map { base =>
(base / path / to / unzipped / file.class) -> "path.to.unzipped.file.class"
...
}
或者,您可以foo.jar
像这样简单地包含在打包 jar 的根目录中:
mappings in (Compile, packageBin) <+= baseDirectory map { base =>
(base / "lib" / "foo.jar") -> "foo.jar"
}