У меня есть конкретная проблема с моим рабочим пространством в 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 в рабочих каталогах. Это на самом деле работало, но когда все тянули, ссылки не работали. Я думаю, символические ссылки на окнах не работают на разных компьютерах.
Я могу изменять структуру проекта, пока это решает проблему.
Примечание. Конфигурации включают в себя настройки уровня приложения, которые могут быть изменены сотрудниками, не занимающимися разработкой (например, просто открытие файла и изменениесвойство от истинного до ложного). Вот почему мы не поместили их в связку. Если это не так, у всех комплектов будут соответствующие конфиги в соответствующем ресурсе комплекта или во фрагменте.