Я разрабатывал приложения Spring Boot, используя Eclipse в качестве IDE (не то, чтобы я думал, что это особенно актуально), и все тестовые выполнения до этого момента выполнялись путем его запуска из IDE. Это прекрасно работает для разработки, но теперь приложение должно быть «развертываемым» (т.е. каким-то образом упакованным, помещенным в тестовую систему, распакованным, настроенным и запущенным).
Есть ли рекомендуемые или«лучшие практики», как организовать организованное приложение?
Должны ли ресурсы приложения быть организованы в определенную структуру каталогов, которая «известна», чтобы при запуске она могла найти все, что нужно? Существуют ли файлы ресурсов, которые должны быть названы определенным образом?
Текущая ситуация
Для этой цели я создал сценарий оболочки (Linux - этоцелевой ОС), чтобы запустить программу и изменить мою сборку maven, чтобы собрать вместе необходимые ресурсы (например, jar зависимости, application.yml, log4j2.xml и т. д.). Все это архивируется и помещается в целевую тестовую коробку Linux.
Когда архив распаковывается, почти все находится в «корне». Когда я пытался выполнить программу, она все же выполняется (и быстро завершает работу с ошибками), однако есть проблемы, которые, я думаю, могут быть связаны с отсутствием правильного доступа к нужным ресурсам во время выполнения. Это всего лишь предположение.
Вот пример:
Распакованный почтовый индекс:
[centos@route-assessor route-assessor]$ ls -l
total 41016
-rw-r--r--. 1 centos centos 1017 Oct 21 11:34 application.yml
-rw-r--r--. 1 centos centos 5059429 Oct 21 15:05 elastic-apm-agent-1.10.0.jar
drwxr-xr-x. 2 centos centos 8192 Oct 22 10:38 lib
-rw-r--r--. 1 centos centos 1975 Oct 22 15:12 log4j2.xml
drwxrwxr-x. 2 centos centos 71 Oct 22 15:12 logs
drwxrwxr-x. 2 centos centos 62 Oct 22 15:12 metrics
-rwxr-xr-x. 1 centos centos 740 Oct 22 15:09 run-route-assessor.sh
-rw-r--r--. 1 centos centos 36909394 Oct 22 10:38 services-0.0.1-SNAPSHOT.jar
ОБНОВЛЕНИЕ :
ОК,возможно, «развертывание» - это не тот термин, который я должен был использовать. Я не планирую «развертывать» или «устанавливать» приложение на машину, я просто помещу на него zip-архив, разархивирую его, выполню некоторую настройку и запусту его.
С учетом сказанного, мойвопрос касается того, существуют ли (или нет) рекомендуемые методы относительно того, как следует организовывать артефакты в разархивированном результате.
Например, в проекте eclipse проект структурирован так, чтобы Maven был «дружественным», и онПохоже, что Spring должен ожидать эту структуру (или, возможно, что-то похожее).
Итак:
<project>
src/
main/
java/
<java code contained in a package hierarchy>
resources/
<various needed resource files>
log4j2.xml
application.yml
etc.
Когда приложение «упаковано», должна ли сохраняться такая структура каталогов? Другими словами, будет ли среда выполнения JVM / Spring Boot ожидать, что ресурсы будут организованы следующим образом?