首页 > 解决方案 > 找不到关于如何在不同产品中放置相同 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)。这就是为什么我们没有将它们捆绑在一起的原因。如果不是这种情况,则所有捆绑包都将在各自的捆绑包资源或片段中具有相关配置。

标签: javaeclipseproductworkspacetycho

解决方案


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


推荐阅读