动态地将资源打包到jar中

时间:2014-06-05 10:19:20

标签: java jar resources embedded-resource

我需要访问一些资源(用于上下文帮助系统),这些资源可能位于目录树(文件系统中的某个位置)或包含在特定的.jar中。

文件系统中的资源应优先于“压缩”资源。

我应该提供一个运行时(不是编译时动作)命令来将所有资源从filesytem目录树迁移到.jar包。

我想构建一个单独的.jar来包含只是那些资源。我不想/需要修改代码。我需要提供最少帮助的产品,并允许costomer改进它并更新重新编译的需要。然后,客户将分发“改进”版本。

实施此方法的最佳方法是什么?

我特别感兴趣的是“迁移”部分,因为我应该能够对资源访问部分进行编码,但总是欢迎评论。

1 个答案:

答案 0 :(得分:0)

有多种方法可以实现,但重用Java能够从类路径上的目录中读取资源对我来说是最容易的。

使用包含可更新帮助资源的zip文件提供应用程序。在应用程序启动时,将此zip文件解压缩到apphome/help-resources,但不要覆盖较新/已修改的文件。使用this answer中的技术将apphome/help-resources目录添加到类路径中。从那时起,可以加载资源,就好像它们位于类路径上的jar文件中一样(不需要特殊代码)。

客户可以更新apphome/help-resources中的文件并使用runtime-command,可以使用apphome/help-resources目录中的文件更新/重新创建zip文件。或者,如果客户有7-zip或类似的东西,只需使用zip工具创建zip文件。