2016-07-06 1 views
0

Недавно я перенес свой javafx в maven. Он запускается и работает нормально, но я не могу понять, где разместить папку конфигурации и как сказать maven, что она включает оболочку.Мигрировал проект в Maven, где класть папку config

Прежде чем я преобразовал проект Maven, структура выглядит следующим образом:

| -src
| -lib
| -config

Теперь sructure выглядит следующим образом:

| -src/главная/Java/my.super.program
| -src/основные/ресурсы/my.super.program
| -lib
| -config

Я пробовал с

<resource>   
    <directory>config</directory> 
    <includes> 
     <include>*.xml</include> 
    </includes> 
    </resource> 

но не имеет работал.

В main.java объявляю необходимые файлы конфигурации. Например:

закрытый окончательный Строка configPath = 'config/config.xml'; приватный финал String accountPath = 'config/account.xml';

Как включить папку config и сообщить maven, чтобы использовать ее?

+0

Как вы используете 'configPath' после этого? – Tunaki

+0

Вы считали 'src \ main \ resources \ config'? – vikingsteve

+0

Tunaki: Я использую configPath для загрузки (и сохранения) конфигурации со свойствами. vikingsteve: см. Комментарий ниже. – Ronon

ответ

2

По умолчанию все, что находится внутри src/main/resources, добавляется в созданный файл jar. В качестве альтернативы вы можете создать свой собственный модуль maven, поддерживающий конфигурацию. Снова вам придется поместить его под src/main/resources

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

+0

Я скопировал папку в src/main/resources. Теперь папка с содержимым создается под target/classes/и содержит файл config.xml. Но когда я запустил jfx: run ничего не будет скопировано в target/jfx/app /. – Ronon

+0

Вам нужно построить банку. Ничто не должно находиться под целью/jfx/app/Предполагается, что он находится на верхнем уровне внутри вашего файла jar. И тогда вы начинаете банку. –

+0

Является ли это способом автоматического копирования папки config в target/jfx/app /? Это было бы неплохо, потому что, если я запустил jfx: native, папка config отсутствует, но необходима для запуска. – Ronon

-2

Надеюсь, этот ответ не смутит вас, если это так, возможно, просто попросит более простое решение.


Банки не являются хорошим местом для хранения изменчивой конфигурации. Вы можете поместить конфигурацию по умолчанию в файл jar. Файл jar не доступен для записи, поэтому ваша программа не может перезаписать конфигурацию, чтобы обновить ее, если она находится в банке.

Для приложений, для которых требуется конфигурация конкретного пользователя, я был бы настроен на сохранение конфигурации в каталоге $USER_HOME/.myapp. Преимущество использования файловой системы для конфигурации, а не базы данных или API-интерфейсов java, заключается в том, что конфигурацию можно легко просмотреть и отредактировать с помощью стандартного текстового редактора.

Пример кода для определения домашнего каталога для конфигурации вашего приложения:

String configHome = System.getProperty("myapp.home", 
    System.getProperty("user.home") + "/.myapp" 
); 

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

Примером такого подхода является класс OsiamHome, который является одним из самых приятных способов настройки конфигурации для приложения Java (это приложение-сервер, но общий принцип может быть использован для клиентского приложения) , Ссылка osiam представляет собой приложение Spring, так что ему может быть предоставлена ​​некоторая поддержка конфигурации, предоставляемая Spring, в частности PathMatchingResourcePatternResolver, которая помогает рекурсивно искать банку, чтобы найти все ресурсы конфигурации по умолчанию для приложения.

Однако, возможно, вам не нужны дополнительные средства, предусмотренные подходом Spring. Вместо этого вы можете просто сохранить список в коде всех файлов в конфигурации по умолчанию и поместить файлы в каталог /resources/config в исходное дерево. Процесс сборки скопирует конфигурацию по умолчанию в ваш файл jar для развертывания. Когда приложение запускается, если каталог конфигурации в файловой системе не существует, приложение может считывать стандартные файлы конфигурации из вашего файла jar и копировать конфигурационные ресурсы в файлы в файловой системе. Затем файлы конфигурации могут быть изменены и изменены как можно больше.

Некоторые другие варианты у вас есть для управления конфигурацией за пределами вашего приложения баночке являются:

  1. Место сведения о конфигурации в базе данных ИЛИ
  2. Используйте Java preferences API ИЛИ
  3. Использование системы упаковки, например, rpm или (возможно) инструмент javapackager или javafx maven plugin, который объединяет конфигурацию по умолчанию в собственный пакет развертывания. Программное обеспечение для развертывания собственной ОС может извлечь конфигурацию и скопировать ее в указанное вами местоположение. Обычно это местоположение будет стандартным местоположением конфигурации для ОС, например /etc/myapp для Linux для системной конфигурации или $USER_HOME/.myapp для конфигурации пользователя.
+0

Я голосую за тебя, потому что ты не отвечаешь на вопрос, но превращаешь его в другой вопрос. Его вопрос заключается в том, где поместить конфигурацию в проект maven, а не «какие чертежи конфигурации». –

+0

Наверное, вы правы, голосуйте хорошо, вопрос по-другому для меня. – jewelsea

Смежные вопросы