Переопределить файл свойств из jar - PullRequest
0 голосов
/ 19 октября 2018

У меня есть файл свойств в одной из .jar моих зависимостей maven.Я хотел бы переопределить значения в моем приложении, поэтому я создал файл с тем же именем и тем же пакетом, но значения из файла JAR все еще используются.Если я удаляю файл свойств из фляги, используются значения файла в моем приложении.Как я могу всегда использовать свойства из своего приложения вместо .jar?

Ответы [ 4 ]

0 голосов
/ 19 октября 2018

Как насчет этого?

  • переименуйте файл свойств с переопределенными значениями, например, _override.properties (если фактический файл называется original.properties.
  • Теперь в вашемкод, прочитайте системное свойство, называемое toOverrideProps, если true, чтобы загрузить файл переопределенных свойств
  • при запуске вашей программы, вы можете установить это свойство с помощью метода -Dprop = value. Таким образом, у вас естьвыбор при запуске, использовать текущий файл свойств или переопределенный файл, без конфликта.
0 голосов
/ 19 октября 2018

Пока код берет ваш файл свойств из пути к классам, это зависит от того, как сконфигурирован ваш путь к классам.

Если вы вывели свой файл из любых jar-файлов - попробуйте указать путь к каталогу, где находится ваш фактический файлперед всеми другими jar-файлами в вашей команде java -cp параметр.

Если вы храните свой файл в своем собственном jar-файле, в classpath - ваш jar-файл должен находиться перед этим jar-файлом зависимостей с файлом свойств по умолчанию.

Тем не менее, это не очень хорошие решения (иногда трудно определить, какой путь JVM будет использовать первым).

Итак, попробуйте найти документацию о вашем банке зависимостей - он может иметь свойствоуказать, откуда и какой файл свойств использовать.

0 голосов
/ 19 октября 2018

Используйте ресурс свойств в банке как шаблон, исходный файл для файла свойств, который вы будете использовать:

Path propertiesFile = Paths.get(System.getProperty("user.home"),
        ".myapp/config.properties");
Files.createDirectories(propertiesFile.getParent());

if (!Files.exists(propertiesFile)) {
    Files.copy(getResourceAsStrem("/config.properties"), propertiesFile);
}

Properties props = new Properties();
props.load(new FileInputStream(propertiesFile.toString());
0 голосов
/ 19 октября 2018

Вы можете использовать Maven Resource Plugin и параметризовать свой файл конфигурации, чтобы вы могли передавать параметры в качестве аргументов через командную строку

...