【发布时间】:2017-12-05 19:20:06
【问题描述】:
在 Java 中,我们有两种不同的方法将数据加载到应用程序中。
如果一个文件被打包到 jar 中(称为 resource 文件),我们通过Class.getResourceAsStream() 方法得到它的InputStream。
如果文件不在 jar 中(称为 external 文件),我们使用new FileInputStream()。
如果我理解正确,resource 和 external 文件之间的区别是因为前者是应用程序正常启动和运行所必需的(因此打包放入可执行 jar - 不应修改),后者是相当可选的,可能由用户提供,也可能不提供。
在the standard maven directory layout 中,我们将resource 文件放在src/main/resources 目录中,以便在构建项目时将它们包含在jar 中。 但我不知道外部文件的正确目录是什么。
在我的应用程序的分布式版本中,我想提供一组默认的 external 文件,因此我需要将它们放在项目结构中的某个位置。最好的位置是什么?
到目前为止,我已经看到 src/main/webapp(它似乎不适合桌面应用程序)和 src/main/conf(它似乎不再使用,而且除了 external 文件可能是不同类型的 - 不仅是文本)。
像src/main/assets 或src/main/data 这样的自定义目录?或者,main 和 test 旁边应该有另一个源目录?
如有任何建议,我将不胜感激!
【问题讨论】:
-
发行版是否像压缩包一样打包成zip格式?
-
是的,我打算将可执行 jar 和 external 文件打包到一个 zip 中。
-
您引用的页面上没有的所有内容都不是“标准”的一部分。任何其他位置都是某些插件建议的常规文件夹的纯粹偏好。因为这个问题主要是基于意见的,或者类似于“推荐工具/库/Maven插件”,不幸的是,这两个问题都使这个问题在 Stackoverflow 上偏离了主题。
-
所以最好创建一个单独的模块,可能称为
dist并将您需要的文件放入您喜欢的目录中。你可以使用 maven-assembly-plugin 和 appassembler-maven-plugin 的组合...
标签: java maven gradle desktop-application project-structure