![]() |
Java-приложение, где хранить конфиги. Возник такой вопрос. Допустим, я пишу настольное java-приложение. Если я запускаю его в винде - конфиг, скорее всего, лежит примерно в той же папке, что и бинарник, а в linux - в /etc или аналогах. Вот в случае традиционных компилируемых языков, при сборке под каждую конкретную платформу я укажу, где лежат конфиги, где бинарники, где библиотеки - и т.д. И инсталлятор будет для каждой конкретной платформы свой (строго говоря, для линукса редко используется инсталлятор, скорее - собирается пакет). А как в случае java-приложения? Куда класть конфиги? Как сделать, чтобы инсталлятор был всеплатформенный? Переменные окружения трогать не хочется. По крайней мере - это будет крайней мерой. Понятно, что можно по сборке для каждой платформы, но как-то это криво. |
Предлагаю не страдать и положить все в папку приложения. А то весь запал на приложение уйдет на конфигурацию, может стать камнем преткновения. |
[quote=40KHYTbIU;43457212] А то весь запал на приложение уйдет на конфигурацию, может стать камнем преткновения. [/quote] Да, есть такая опасность. |
но вопрос все-таки о бест практисах. Не я же один столкнулся с такой проблемой. Хотя, смотря, как это реализовано в том же eclipse - похоже, все решили так же. |
Есть что скрывать? Операционок(целевых) не так много, для каждой своя сборка. |
Да нет, нечего скрывать. Пытаюсь не изобрести велосипед. Но разве не рекламировалась широко возможность запуска программ под различные платформы? А тут оказывается, можно - но криво. Кстати, как сейчас принято хранить конфиги? Создать класс конфиг и потом серилизовать\десирилизовать его в json - это нормально, или рукожопие? |
Такой вопрос лучше задать на скл.ру(надеюсь не сочтут за рекламу) в разделе java. |
кстати, а где сейчас основная тусовка java-погромистов? |
хз где тусовка (может тут [url]http://javatalks.ru/[/url] ), а для хранения настроек есть [url]http://docs.oracle.com/javase/8/docs/api/java/util/prefs/Preferences.html[/url] (которые в реестра у винды и в ~/.java/.userPrefs у линукса) такжо можно просто использовать properties, но если они для редактирования юзером, то хранить рядом с бинарником даже в win не стоит |
[quote=Добрых дел мастер;43458757] Кстати, как сейчас принято хранить конфиги? Создать класс конфиг и потом серилизовать\десирилизовать его в json - это нормально, или рукожопие? [/quote] Да не рукожопие, но обычный жисон не поддерживает коментарии (но парсер jackson можно настроить), также надо сделать так чтобы он игнорировал (или писал в лог) неизвестные поля (иначе если в новой версии ПО поле удалить то все конфиги отвалятся и юзер пойдет ставить свечку заупокой души программиста) у хипстеров модно хранить конфиги в yaml, у интерпрайза и олдскула в properties (в java есть класс с таким именем смотри его) |
о, спасибо. Наверное, это действительно самый правильный путь. |
ну яб не сказал что совсем уж правильный т.к. в linux есть [url]https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html[/url] который предлагает хранить настройки в: >$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used. Но емнип это можно подшаманить, а вот формат их хранения (и максимальный размер значения в байтах- MAX_VALUE_LENGTH Maximum length of string allowed as a value (8192 characters).) весьма печален 8), но если руками не лазить в файлы и что-то жирное не хранить то подойдет |
В ~/.. |
Текущее время: 06:58. Часовой пояс GMT +3. |