Управление зависимостями Maven vs subversion svn: external для корпоративных приложений - PullRequest
1 голос
/ 30 мая 2011

Я новичок в Maven.

Данное Java-приложение уровня предприятия. Исходный код управляется Subversion.

Как я понимаю, после того, как я фризировал код, я смогу скомпилировать его через 5 лет и получить тот же результат, но меня беспокоит, сможет ли maven справиться с ним со 100% точностью:

  1. Возможно ли, когда maven выходит в Интернет, он принесет поврежденную банку (например, проблема с сетью или зеркало имеет неправильную банку)?
  2. Допустим, я хочу перекомпилировать мой код 5 лет спустя. Возможно ли, что нужной банки там не будет?
  3. Не опасно ли для корпоративного приложения зависеть от таких «непрозрачных» внешних источников (например, интернет-зеркало).

С другой стороны, в моем предыдущем месте мы использовали для этого svn: external - у нас есть специальный каталог (ветка vendor) в svn для всех 3-х продуктов (jars). Для каждого продукта и его конкретной версии есть специальный каталог. Код приложения использует svn external , чтобы доставить конкретную банку из ветви поставщика.

В этой конфигурации я знаю все jar-файлы под управлением исходного кода, и через 5 лет я смогу пересобрать свое приложение и упаковать его в те же jar-файлы, что и 5 лет назад.

Я что-то пропустил?

1 Ответ

1 голос
/ 30 мая 2011

Да, это рискованно, но есть способы решения этой проблемы.

  1. Это может случиться, и на самом деле это происходит довольно часто.Однако, чтобы вылечить поврежденную загрузку, вы можете просто удалить пакет из вашей локальной файловой системы и запустить Maven, чтобы повторно загрузить его.Я не думаю, что пакеты в зеркалах легко повреждаются, как только они появляются.
  2. Не знаю, как официальное слово сопровождают, но даже если кто-то должен был гарантировать, что библиотеки "всегда будут там", аппаратное обеспечениевозможны сбои, продажи компаний, изменения процессов и т. д. и т. д. Пока вы доверяете кому-то, кроме себя, вы не можете быть уверены.
  3. Да, это так.

Чтобы действительно решить эту проблему, вы можете настроить свой собственный репозиторий с помощью Nexus или Archiva (см. Также SO: Лучший инструмент корпоративного хранилища для Maven 2? ).Если ваш собственный индекс запущен и работает, вы можете полностью контролировать защиту библиотеки зависимостей на долгие годы.Конечно, он все еще может сломаться:)

Если вы работаете в малом бизнесе, я не думаю, что есть какая-то польза от изменения ваших процессов и создания собственного зеркала (какова дополнительная ценность?).svn:externals, возможно, не такой сложный подход, но лично я бы тоже не счел его плохим.

Могу также добавить, что Maven - это гораздо больше, чем просто управление зависимостями.Усиливается синергия, когда вы даете Maven больше контроля над своими проектами, поэтому, если вы в конечном итоге перейдете на Maven, имело бы смысл также полагаться на его другие функции (проще обновлять библиотеки, автоматически загружать исходные коды, соглашения о структуре, архитектуру плагинов,и др.).

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