我需要访问一些资源(用于上下文帮助系统),这些资源可能位于目录树(文件系统中的某个位置)或包含在特定的.jar中。
文件系统中的资源应优先于“压缩”资源。
我应该提供一个运行时(不是编译时动作)命令来将所有资源从filesytem目录树迁移到.jar包。
我想构建一个单独的.jar来包含只是那些资源。我不想/需要修改代码。我需要提供最少帮助的产品,并允许costomer改进它并更新重新编译的需要。然后,客户将分发“改进”版本。
实施此方法的最佳方法是什么?
我特别感兴趣的是“迁移”部分,因为我应该能够对资源访问部分进行编码,但总是欢迎评论。
答案 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文件。