У нас есть дебаты в моем офисе вокруг того, что может и не может идти в файле JAR. Было высказано предположение, что в бедной форме есть что-то, что не является файлом .class, попадающим в JAR. В настоящее время у нас есть некоторые конфигурации XML для Ibatis/etc, некоторые файлы свойств .. обычный. Однако есть попытка извлечь все такие файлы из JAR и поместить их в локальную файловую систему каждой машины развертывания. Звучит ли это разумно?Можно ли разместить файлы конфигурации в JAR?
ответ
Это не кажется мне разумным. Я считаю, что конфигурация какого-либо приложения должна быть в файле jar. Такие вещи, как ORM-сопоставления, пружинная конфигурация, пользовательское пространство имен XSD, другие XSD и т. Д., Должны быть в большинстве случаев в банке. Это важная часть артефакта развертывания.
Факт, что это не файл class
, не означает, что его следует вынимать из банки только потому, что его теоретически можно модифицировать, не создавая новую банку. Можете ли вы представить себе модификацию * .hbm.xml в процессе производства? для меня это звучит очень страшно.
Я думаю, что некоторые конфигурации, такие как spring xml, в большинстве случаев предназначены для лучшей организации вашего приложения и зависимостей, но не для их изменения во время исполнения на производстве.
Если вы вносите изменения в файл конфигурации внутри JAR (даже без изменения какой-либо строки кода Java), весь JAR необходимо перестроить и перераспределить. Звучит ли это разумно?
Иногда вы не хотите, чтобы люди вносили изменения в файл конфигурации, например, если конфигурация является средой. – Qwerky
Вы хотите или ожидать, что они будут изменены без новой версии кода? Затем вам нужно извлечь их.
Если ответ на вопрос не у вас не должен извлекать их, так как это позволит поддерживать возиться с ними, не пройдя процесс освобождения. (Конечно, это также возможно, если они находятся в ЕАО, но чуть менее заманчивы.)
Update: Но поскольку вы упомянули несколько машин развертывания, есть третий вариант: выделить их и поместить их в общедоступных областях на сетевом диске. Редактируемые вручную файлы конфигурации, которые реплицируются на нескольких машинах (но должны быть идентичными), печально известны тем, что они не синхронизируются.
это плохая форма, чтобы иметь что-нибудь, что не является .class файла перейти в JAR
Это нонсенс. На самом деле очень форма для размещения ресурсов, таких как значки и другие файлы данных, которые пользователь использовал в коде JAR вместе с кодом. Это то, что делают методы getResource()
и getResourceAsStream()
для Class
и ClassLoader
, что делает его гораздо более надежным, чем использование путей ресурсов вручную.
Однако файлы конфигурации, возможно, другое дело. Если они предназначены для изменения во время или после развертывания, то наличие их внутри JAR-файла является довольно неудобным, и предпочтение отдается им в отдельном каталоге.
Инструменты ORM (такие как Hibernate или IBatis) на самом деле не должны изменяться после развертывания приложения. Итак, нет, я бы сказал, что это не имеет смысла для таких файлов.
В зависимости от ваших требований файлы конфигурации приложения могут быть размещены за пределами Jar/War, чтобы их можно было изменить без необходимости пересоздать банку. Имейте в виду, что изменение параметров приложения в производстве - это imho, плохая практика. Изменения должны быть проверены сначала в некоторых предварительных условиях.
Это совершенно нормально, чтобы поместить файлы без класса в файле JAR, особенно ресурсов, что потребности приложений (изображения, локализованные строки и т.д.) Зная это, вы должны решить, какой сценарий подходит вашей ситуации:
- Если конфигурация исправлена и будет изменяться только при развертывании нового JAR-файла, поместите его в JAR.
- Если конфигурация должна быть изменена вручную или приложением, сохраните ее в файловой системе.
Если вы выберете второй вариант, обратите внимание, что это хорошая практика, чтобы включить конфигурацию по умолчанию в файле JAR, чтобы обрабатывать случай, когда внешний файл конфигурации отсутствует. По умолчанию можно загрузить непосредственно из JAR или скопировать в файловую систему, чтобы стать новой редактируемой конфигурацией.
- 1. Где разместить файлы конфигурации в JAR?
- 2. Можно ли помещать переменные в файлы конфигурации?
- 3. Как разместить все файлы jar в одном файле jar?
- 4. файлы конфигурации logback на jar
- 5. Можно ли разместить файлы на симуляторе iPad?
- 6. где разместить файлы jar внутри репозитория
- 7. Можно ли использовать файлы ресурсов из jar в gradle?
- 8. Можно ли поместить файл ресурсов в файлы JAR?
- 9. Можно ли просматривать файлы jar в Android Studio Explorer Explorer?
- 10. Могу ли я разместить файлы xml, файлы jar, файлы журналов внутри пакета java папки src
- 11. Можно ли разместить внешние файлы внутри моего веб-приложения?
- 12. Можно ли запускать файлы jar с использованием разных версий java?
- 13. Java 7 | Можно ли загрузить JAR-файлы апплета параллельно?
- 14. Можно ли разместить изображение на фоне графика?
- 15. Можно ли просмотреть файлы конфигурации приложения Angular.js для производства?
- 16. Можно ли разместить jQuery анимации?
- 17. Как разместить файлы jar перед SDK в Android Studio?
- 18. Можно ли разместить JavaScript в частичных изображениях
- 19. Рельсы, где можно разместить конфигурацию, например, ini-файлы?
- 20. Maven - как разместить файлы jar зависимости зависимости от сборки?
- 21. Добавить внешние файлы конфигурации в jar, используя gradle
- 22. Maven: как адресовать файлы конфигурации в каталоге, упакованном внутри JAR
- 23. Поддерживаются ли файлы конфигурации Doxygen?
- 24. Можно ли разместить сетку в картах Nokia?
- 25. Можно ли разместить кнопку в календаре Google?
- 26. Можно ли разместить элемент рельсов в частичном?
- 27. Можно ли разместить текстовую метку в слое?
- 28. Можно ли разместить текст TextView в центр
- 29. Можно ли разместить javascript в PostBackUrl LinkButton
- 30. Файлы конфигурации JBoss
Вопрос сводится к вопросу о том, предназначены ли эти файлы для редактирования конечным пользователем вашего приложения или если существуют зависимые от машины конфигурации. – SirDarius