Назад | Перейти на главную страницу

Синхронизация версий библиотеки приложений с сервером

У меня есть приложение на основе maven, и оно ссылается на определенные библиотеки, которые помечены как предоставленные моим сервером приложений, например:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</verision>
  <scope>provided</scope>
</dependency>

Теперь очевидно, что моему серверу приложений необходимо предоставить версию 2.5 сервлета api. Существуют ли какие-либо стратегии для обеспечения того, чтобы сервер приложений предоставлял правильную версию библиотеки (надеюсь, тесты развертывания также обнаружат это, но я надеюсь предотвратить несоответствие в первую очередь).

Ответ в вопросе: pom явно говорит, что версия 2.5 сервлета api «предоставляется», что означает предустановленную кем-то / чем-то. Maven был удален из обеспечения / обеспечения соблюдения этих зависимостей (в частности, проверка была отложена до среды выполнения или установщика). В этом случае зависимости будут управляться и предоставляться rpm / dpkg (... или Macports "порт", Cygwin"install.exe" ...) или просто добросовестная загрузка / установка вручную. Например, если предположить, что dpkg / rpm / port / etc, ваше приложение будет объявлено зависимым от «tomcat-6.x» или «glassfish-3.x» (и т. Д.).

На самом деле вы могли бы загрузить и упаковать реализацию сервлета с приложением maven в качестве соответствующей зависимости от maven, но (обычно) это не требуется, если только не создается небольшой автономный сервер (например, связанный с Winstone, как Дженкинс). В некоторых случаях вы можете выбрать оба варианта: так, диспетчер пакетов конечного пользователя (yumex, synaptic) будет отображать оба варианта. your-app-standalone (в комплекте с сервером) и your-app-war (только веб-приложение), для которого также потребуется установить сервер приложений.

Если вы выполняете развертывание в Linux, вы можете упаковать свою установку как пакеты PRM или DEB и указать им зависимости. Тогда rpm / dpkg откажется устанавливать ваше приложение, если сервер слишком старый. Для создания таких пакетов есть хорошие модули maven.