Каковы лучшие практики для организации приложений Spring Boot? - PullRequest
0 голосов
/ 22 октября 2019

Я разрабатывал приложения 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 ожидать, что ресурсы будут организованы следующим образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...