Я бы сказал, что, вероятно, это не лучшая практика из-за управления версиями: откуда вы знаете, какую версию приложения вы развернули? Если вы развертываете .war-файл, ваш процесс сборки может позаботиться об обновлении номера сборки (из системы контроля версий или отдельно, как угодно - до тех пор, пока у каждой сборки свой номер, это нормально).
Если вы используете непрерывную интеграцию (и это определенно хорошая идея), тогда процесс сборки должен выводить «артефакт» (файл войны) каждый раз, когда вы вносите изменения в исходный код. также возможно пометить код в управлении версиями номером сборки.
Итак, когда вы развертываете свое веб-приложение, вы точно знаете, какая версия запущена и какой исходный код составляет эту версию.
Внесение небольших постепенных изменений путем обновления отдельных файлов .class, я бы сказал, вероятно, не является хорошей идеей ни для чего, кроме тестирования локального разработчика.