java - 找不到关于如何在不同产品中放置相同 conf 文件的解决方案
问题描述
我在 Eclipse 中的工作区有一个特定问题。
该项目是一个带有 JavaFx UI 的 OSGi 项目。有捆绑包,我从这些捆绑包中制作了 3 个功能。我有 2 个来自这些功能的产品。一个功能是核心功能,另外两个功能对某些捆绑包有不同的实现。然后我的产品每个都有两个功能。正如您猜测的那样,product-1 具有 core 和 impl-1 功能,product-2 具有 core 和 impl-2 功能。
好的,但还没有,还有更多解释,所以我可以问我的问题 :) 这些具有不同实现的功能具有不同的工作目录,因为它们需要不同的本机库来运行。
这是基本的项目设置:
project
|
+---core
| |
| +---plugin.api
| +---plugin.impl.1
| +---plugin.impl.2
|
+---external
| |
| +---working_dir_1 (only for product 1)
| | | aaaa1.dll
| | | aaaa2.so
| |
| +---working_dir_2 (only for product 2)
| | | bbbb1.dll
| | | bbbb2.dll
| | | bbbb3.so
| | | bbbb4.so
| |
| +---config (shared)
| | +---Database
| | +---Log
| | +---Theme
| | +---conf1
| | +---conf2
| | +---conf3
| | \---conf4
|
+---features
| +---core.feature
| +---core.1.feature
| \---core.2.feature
|
+---products
| +---product.1
| +---product.2
|
+---releng
| +---project.configuration
| \---project.target
|
+---tests
如您所见,上面的应用程序可以通过到达父文件夹来使用 conf 文件。在java中是这样的:
System.getProperty("user.dir") + File.separator + ".." + File.separator + CONFIGURATION_FOLDER_NAME;
还行吧。我和我团队中的每个人都可以一键运行选择的产品。我喜欢项目设置。
哦,我添加了第谷标签,但从未提及它。我们还使用 tycho 来自动构建我们的项目。有了它,我们可以拥有 4 种产品。每个 product-1 和 product-2 的 Win 和 Linux 可运行文件。在构建和实现产品时,tycho 复制所需的本地库和配置文件。但是当配置文件被复制时,tycho 将它们放在创建产品的工作目录中。因此应用程序无法找到 conf 文件,因为它在物化产品的父文件夹中查找 conf 文件。
这是我现在的问题。当我想用 tycho 构建时,我必须将上面的代码更改为:
System.getProperty("user.dir") + File.separator + CONFIGURATION_FOLDER_NAME;
我该如何解决这个问题?如前所述,我们正在 Windows 10 上开发并使用 eclipse 和 tycho。
我不想增加配置,因为每次更改两个文件会很麻烦。
我尝试使用符号链接将 conf 文件夹链接放在工作目录中。它实际上有效,但是当每个人都拉动时,链接不起作用。我猜 Windows 上的符号链接在不同的计算机上不起作用。
只要能解决问题,我就可以改变项目结构。
注意:配置包括可以由非开发人员更改的应用程序级配置(例如打开文件并将属性从 true 更改为 false)。这就是为什么我们没有将它们捆绑在一起的原因。如果不是这种情况,则所有捆绑包都将在各自的捆绑包资源或片段中具有相关配置。
解决方案
您可以将配置放入一个包中,然后添加Bundle-Shape: dir
,然后您可以通过包类加载器读取配置文件,而与实际位置无关。
推荐阅读
- angular - 模态自动关闭 - Angular
- node.js - VS Code 远程调试集群中的 NodeJ
- javascript - 然后不等待承诺
- c++ - 我可以在不包含任何库的情况下将 int 转换为字符串吗?
? - javascript - 读取 XML 属性文本并替换文本中间的一些单词
- ruby-on-rails - 当用户和 ActiveAdmin 具有相同模型时,CanCan gem 的 Active Admin 授权
- javascript - PHP数组到javascript循环与json_encode
- python-3.x - NoneType 对象没有属性“组”
- python - 如何使用聪明的选择实现 Django Chained Drop Down
- python - 在 Python 中,可以在函数中使用循环吗?