Управление зависимостями развертывания в Java - PullRequest
1 голос
/ 18 августа 2010

Я пытаюсь выяснить, как лучше всего обрабатывать зависимости на серверах приложений.Мы рассматриваем maven для создания приложений, но мы нашли проблему.Появляется, когда нам нужно обновить проприетарную разделяемую библиотеку, у которой нет номера версии. Это происходит раз в месяц, и мы используем функцию разделяемой библиотеки Websphere следующим образом:

  • Для каждой разделяемой библиотекив Websphere мы создаем псевдоним без версии.Например: db-component-1.2.1 получает псевдоним db-component.Во время первого развертывания мы связываем приложение с необходимыми библиотеками, используя псевдонимы.Поскольку мы игнорируем версию, все приложения должны использовать одну и ту же версию, что создает некоторые ограничения.Но когда нам нужно обновить разделяемую библиотеку, мы просто загружаем новую библиотеку в WS, а затем все приложения используют обновленную версию.

У нас более 70 приложений, использующих собственные разделяемые библиотеки.Эти библиотеки постоянно меняются, и это решение облегчает управление.Но кажется немного странным, что зависимости изменяются вне процесса сборки приложения.Контроль зависимостей больше не является надежным, потому что информация в POM приложения может быть ложной.Кроме того, все приложения должны использовать одинаковые версии.

Я думаю, что может существовать лучшее решение.

Мы рассмотрели другую модель.Включите зависимости в каждой войне.Это позволяет нам использовать разные версии библиотек в каждом приложении без ограничений.Но есть одна проблема: когда вносятся изменения в проприетарную разделяемую библиотеку, нам нужно перестраивать и повторно развертывать все приложения.

Я думал о том, что наша проприетарная разделяемая библиотека настолько нестабильна или использует решение, которое смешивает обаидеи, но я не уверен, как решить эту проблему.OSGI выглядит как лучший способ обработки зависимостей, но у нас будет та же проблема при обновлении многих приложений.

Должны ли мы использовать функцию разделяемой библиотеки WS?Есть ли лучший способ решить эту проблему?Советы высоко ценятся.

Спасибо

1 Ответ

1 голос
/ 18 августа 2010

Я не уверен, полностью ли я понимаю, о чем вы спрашиваете, я сначала подумал, что вы не знаете, как управлять зависимостями, которые недоступны версионным способом, если это так:

Вы уже упомянули OSGi, возможно, вы захотите запустить свой собственный репозиторий maven, используя Nexus , который позволит вам самостоятельно создавать версии неверсионных jar-файлов.

Не желая констатировать очевидное, вы не можете использовать конкретную версию чего-то, что не имеет версий ...

Но при повторном чтении вашего вопроса может показаться, что вы спрашиваете, лучше ли иметь явные зависимости для каждого из ваших приложений или какой-то общий набор зависимостей, которые обновляются на лету, что приводит к изменениям во всех ваших приложениях. Я бы сказал следующее:

  • Вам нужны повторяемые сборки, что означает, что вам нужно знать, когда вы создаете приложение, какую версию зависимых библиотек оно использовало
  • Вы хотите, чтобы при следующем построении все проекты выбирали последнюю версию зависимостей

Вы можете использовать плагин Maven версии для управления такого рода вещами, у нас есть родительский pom, определяющий версии всех библиотек в разделе dependencyManagement, и каждые 5 минут запускаем скрипт для этого, чтобы посмотреть для обновленных зависимостей. Всякий раз, когда изменяется родительский pom, все дочерние pom обновляются и включаются в систему контроля версий, что означает, что как только будет выпущена новая общая библиотека, мы попытаемся собрать, а затем выполнить модульное тестирование всех наших приложений.

...