找不到关于如何在不同产品中放置相同 conf 文件的解决方案

Cant find a solution on how to place same conf files in different products

我在 eclipse 中的工作区有一个特定问题。

该项目是一个带有 JavaFx 的 OSGi 项目 UI。有捆绑包,我从这些捆绑包中制作了 3 个功能。我有 2 个产品来自这些功能。一个功能是核心功能,另外两个功能对某些捆绑包有不同的实现。那么我的产品各有两个特点。正如您猜测的那样,product-1 具有核心和 impl-1 功能,product-2 具有核心和 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 标签,但从未提及。我们还使用 tycho 来自动构建我们的项目。有了它,我们可以有 4 个产品。赢得每个产品 1 和产品 2 Linux 运行 的机会。在构建和实现产品时,tycho 复制需要的本地库和配置文件。但是当复制配置文件时,第谷将它们放在创建产品的工作目录中。因此应用程序无法找到 conf 文件,因为它在具体化产品的父文件夹中查找 conf 文件。

这就是我现在的问题。当我想用 tycho 构建时,我必须将上面的代码更改为:

System.getProperty("user.dir") + File.separator + CONFIGURATION_FOLDER_NAME;

我该如何解决这个问题? 我们正在 windows 10 上开发,并使用前面提到的 eclipse 和 tycho。

我不想增加配置,因为每次更改两个文件会很麻烦。

我尝试用符号 link 将 conf 文件夹 link 放在工作目录中。它确实有效,但是当每个人都拉动时,links 没有起作用。我猜 windows 上的符号 links 在不同的计算机上不起作用。

我可以更改项目结构,只要能解决问题。

注意: 配置包括可以由非开发人员更改的应用程序级配置(比如只打开一个文件并将 属性 从 true 更改为 false)。这就是为什么我们没有将它们捆绑在一起。如果不是这种情况,则所有捆绑包都将在各自的捆绑资源或片段中具有其相关配置。

您可以将配置放入一个包中,然后添加 Bundle-Shape: dir 然后您可以通过独立于实际位置的包类加载器读取配置文件。