Публикация приложения Spring Boot на рабочем сервере и управление обновлениями.JAVA

Программисты JAVA общаются здесь
Anonymous
Публикация приложения Spring Boot на рабочем сервере и управление обновлениями.

Сообщение Anonymous »

Я хотел бы спросить об опыте запуска веб-приложения Spring Boot со встроенным Tomcat на основе Maven или Gradle. До сих пор я работал с ванильным приложением Spring, развернутым на Tomcat, без диспетчера зависимостей, со всеми внешними jar-файлами, собранными в /WEB-INF/lib/.
Я иметь типичное веб-приложение, которое в первую очередь представляет собой многопользовательский веб-сервис и которое очень часто меняется. Я часто меняю что-то в представлениях (в моем случае в файлах JSP), в классах Java, а также в файлах Javascript или CSS.
Я не хочу создавать новый файл .jar с каждым обновить, загрузить его на сервер и перезапустить приложение. Я хотел бы работать с распакованными файлами и заменять только те, которые были изменены.
Я могу запустить приложение в режиме «отладки», чтобы автоматически загружались простые изменения в классах. А при изменении внешних библиотек (зависимостей), используемых в моем приложении, я, конечно, могу "перезагрузить" приложение, но хотелось бы, чтобы это произошло как можно быстрее и с наименьшим влиянием на пользователей.Как мне организовать процесс обновления приложения на сервере?
Я предполагаю, что на сервере я могу выполнить, например, обновление приложения из SVN или GIT-репозиторий, и я могу выполнить там сценарий Maven или Gradle. Хотелось бы, чтобы обновление было максимально быстрым, например:
  • "git pull" исходников Java, представлений и статических файлов
  • обновлять внешние библиотеки на основе зависимостей, со временем загружать новые jar-файлы и удалять неиспользуемые.
  • компилировать новые классы на сервере
  • только при необходимости - перезагрузите приложение
А может для таких нужд лучше подойдет модель приложения Spring Boot, развернутого на Tomcat, а не с встраиванием Tomcat ? Какие впечатления?
И второй вопрос: в приложении, развернутом на Tomcat, я использовал удобную функцию перезагрузки приложения с помощью Tomcat Manager. Это очень быстрая операция, намного быстрее, чем перезапуск всего приложения. Кроме того, он позволяет сериализовать и восстанавливать все сессии.
Возможна ли такая «перезагрузка» в Spring Boot со встроенным Tomcat?
Обновить
Похоже, Spring Boot Actuator — это ответ на вопросы, связанные с перезагрузкой приложения.
Что касается Maven:
Я прочитал много руководств по использованию Maven. с помощью Spring Boot.
Однако все они предполагают, что приложение упаковано в jar или war. Я работаю в Eclipse IDE, и, конечно, IDE не требует упаковки приложения и служит "распакованным" из файловой системы.
Мне не удалось запустить приложение через Maven-скрипт в том же способ.
Можете ли вы привести пример файла конфигурации Maven или Gradle, который:
  • обновляет список зависимостей и jar-файлы зависимостей
  • компилирует Java-классы
  • запускает или перезапускает приложение
Я не могу справиться с этим последним пунктом.
Eclipse в Windows извлекает зависимость в папку «C:\Users\\.m2\repository» и может передать зависимость список в javaw.exe через параметр «-classpath», например:

Код: Выделить всё

javaw.exe --classpath C:\Users\\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.2.5\spring-boot-starter-web-3.2.5.jar;C:\Users\\.m2\repository\org\springframework\boot\spring-boot-starter\3.2.5\spring-boot-starter-3.2.5.jar;C:\Users\\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.2.5\spring-boot-autoconfigure-3.2.5.jar;C:\Users\\.m2\repository\org\yaml\snakeyaml\2.2\snakeyaml-2.2.jar;C:\Users\\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.2.5\spring-boot-starter-json-3.2.5.jar;C:\Users\\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.15.4\jackson-datatype-jdk8-2.15.4.jar;C:\Users\\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.15.4\jackson-datatype-jsr310-2.15.4.jar;C:\Users\\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.15.4\jackson-module-parameter-names-2.15.4.jar;C:\Users\\.m2\repository\org\springframework\spring-web\6.1.6\spring-web-6.1.6.jar;C:\Users\\.m2\repository\org\springframework\spring-beans\6.1.6\spring-beans-6.1.6.jar;C:\Users\\.m2\repository\io\micrometer\micrometer-observation\1.12.5\micrometer-observation-1.12.5.jar;C:\Users\\.m2\repository\io\micrometer\micrometer-commons\1.12.5\micrometer-commons-1.12.5.jar;C:\Users\\.m2\repository\org\springframework\spring-webmvc\6.1.6\spring-webmvc-6.1.6.jar;C:\Users\\.m2\repository\org\springframework\spring-expression\6.1.6\spring-expression-6.1.6.jar;C:\Users\\.m2\repository\org\springframework\boot\spring-boot-starter-log4j2\3.2.5\spring-boot-starter-log4j2-3.2.5.jar;C:\Users\\.m2\repository\org\apache\logging\log4j\log4j-slf4j2-impl\2.21.1\log4j-slf4j2-impl-2.21.1.jar;C:\Users\\.m2\repository\org\apache\logging\log4j\log4j-core\2.21.1\log4j-core-2.21.1.jar;C:\Users\\.m2\repository\org\apache\logging\log4j\log4j-jul\2.21.1\log4j-jul-2.21.1.jar;C:\Users\\.m2\repository\org\apache\logging\log4j\log4j-spring-boot\2.21.1\log4j-spring-boot-2.21.1.jar;C:\Users\\.m2\repository\org\apache\logging\log4j\log4j-api\2.21.1\log4j-api-2.21.1.jar;C:\Users\\.m2\repository\org\springframework\boot\spring-boot\3.2.5\spring-boot-3.2.5.jar;C:\Users\\.m2\repository\org\springframework\spring-core\6.1.6\spring-core-6.1.6.jar;C:\Users\\.m2\repository\org\springframework\spring-context\6.1.6\spring-context-6.1.6.jar;C:\Users\\.m2\repository\org\springframework\boot\spring-boot-configuration-processor\3.2.5\spring-boot-configuration-processor-3.2.5.jar;C:\Users\\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\4.0.2\jakarta.xml.bind-api-4.0.2.jar;C:\Users\\.m2\repository\jakarta\activation\jakarta.activation-api\2.1.3\jakarta.activation-api-2.1.3.jar;C:\Users\\.m2\repository\jakarta\servlet\jsp\jstl\jakarta.servlet.jsp.jstl-api\3.0.0\jakarta.servlet.jsp.jstl-api-3.0.0.jar;C:\Users\\.m2\repository\jakarta\servlet\jakarta.servlet-api\6.0.0\jakarta.servlet-api-6.0.0.jar;...
Откуда Maven загружает файлы на сервере, работающем под управлением Linux/Debian?
Как запустить приложение Spring Boot через Maven?
Дополнительный вопрос: при развертывании приложения на Tomcat зависимости должны находиться в "WEB-INF/lib/" - как тогда загружать все необходимые jar-файлы в эту папку с помощью Maven?


Подробнее здесь: https://stackoverflow.com/questions/785 ... ng-updates

Вернуться в «JAVA»