Можем ли мы полагаться на то, что maven решит проблемы с загрузкой классов во время выполнения? - PullRequest
0 голосов
/ 15 ноября 2018

Уважаемые,

Мы переносим устаревший проект с ant на maven.

Существует множество зависимостей, и мы хотели бы их очистить.

Этот вопрос (особенно первый комментарий) вызывает некоторые опасения ...

Это большой проект с использованием, которое отличается в течение календарного года, и у нас не так многоЧто касается покрытия тестами, то «просто запустить тесты» мы не можем.

Если проект компилируется с помощью maven и развертывается, существуют ли способы его сбоя во время выполнения?

Если так, есть ли способы смягчить это «как-то»?

Спасибо за мысли и идеи, все отзывы очень ценятся ...

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

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

Как минимум, вы должны сравнить выходной артефакт, потому что в конце дня и Ant, и Maven создают развертываемый артефакт: WAR или JAR с зависимостями. Проверьте версии библиотек в обеих, очень вероятно, что они будут разными, потому что Ant не обрабатывает разрешение зависимостей (если вы не использовали Ivy).

0 голосов
/ 15 ноября 2018

Для экономии этого разговора, давайте предположим, что ошибок нет.

Что может сломаться непредсказуемым образом?

  • Даже если вы сможете скомпилировать проект, вы никогда не будете на 100% уверены, что все перенесли правильно. Значения по умолчанию не могут быть обработаны так же, как Ant и Maven. Таким образом, вы, возможно, использовали зависимость (временную или нет), которая работает немного иначе, чем ваш оригинал.
  • Maven гораздо более стандартизирован, чем Ant, и это означает, что вы не всегда сможете делать то же самое в Maven и Ant. Ant может использовать скрипт, в то время как Maven может использовать плагин, который вы не можете контролировать. Это может привести к различному поведению в вашем приложении.

Что вы можете сделать, чтобы решить проблему?

  • Потратьте некоторое время и напишите несколько интеграционных тестов, по крайней мере, счастливого пути, плюс пару общих красных путей.
  • Тест, тест и тест. Ручное тестирование может выявить неожиданное поведение.
  • Выполняйте новую версию постепенно. Если вы развертываете свое решение на большом количестве серверов, попробуйте сначала развернуть его только на одном из них и отслеживать аномалии. Если вы можете раскрутить новый сервер и использовать там только небольшой трафик (например, 5%), чтобы отслеживать ошибки с использованием реальных данных, не подвергая при этом существенной опасности вашу доступность, вы должны сделать это тоже.

Всегда имейте в виду, что миграции сопряжены с риском. Кроме того, это, вероятно, хорошая причина, чтобы впредь охватить юнит-тестирование и интеграционное тестирование :)

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