Не могу найти решение о том, как разместить одни и те же файлы conf в разных продуктах - PullRequest
0 голосов
/ 03 октября 2019

У меня есть конкретная проблема с моим рабочим пространством в eclipse.

Проект является проектом OSGi с пользовательским интерфейсом JavaFx. Есть пакеты, и я сделал 3 функции из этих пакетов. У меня есть 2 продукта с этими функциями. Одна особенность является основной, а две другие имеют разные реализации некоторых пакетов. Тогда у моих продуктов есть две особенности каждый. Как вы думаете, продукт-1 имеет функции ядра и импл-1, а продукт-2 имеет функции ядра и импл-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 продукта. Win и Linux runnables для каждого продукта-1 и продукта-2. При сборке и реализации продуктов Tycho Copy необходимы собственные библиотеки и файлы конфигурации. Но при копировании конфигурационных файлов Tycho помещает их в рабочий каталог созданного продукта. Таким образом, приложение не может найти файлы conf, так как оно ищет файлы conf в родительской папке материализованного продукта.

Это моя проблема. Когда бы я ни захотел собрать с Tycho, я должен изменить приведенный выше код так:

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

Как я могу решить эту проблему? Мы разрабатываем для Windows 10 и используем Eclipse и Tycho, как упоминалось ранее.

Я не хочу умножать конфигурации, так как будет сложно каждый раз менять два файла.

Я попытался использовать символическую ссылку для размещения ссылок на папки conf в рабочих каталогах. Это на самом деле работало, но когда все тянули, ссылки не работали. Я думаю, символические ссылки на окнах не работают на разных компьютерах.

Я могу изменять структуру проекта, пока это решает проблему.

Примечание. Конфигурации включают в себя настройки уровня приложения, которые могут быть изменены сотрудниками, не занимающимися разработкой (например, просто открытие файла и изменениесвойство от истинного до ложного). Вот почему мы не поместили их в связку. Если это не так, у всех комплектов будут соответствующие конфиги в соответствующем ресурсе комплекта или во фрагменте.

1 Ответ

0 голосов
/ 03 октября 2019

Вы можете поместить конфигурацию в пакет и добавить Bundle-Shape: dir, а затем вы можете читать файлы конфигурации через загрузчик классов комплектов, независимо от реального местоположения.

...