Я бы отделил "build" от "deploy".Сборка будет принимать исходный код и создавать развертываемый артефакт.В этом случае у нас есть несколько файлов .java, мы компилируем их в файлы .class и (обычно) помещаем их в JAR.JAR - это то, что мы используем.В Java EE мы могли бы пойти дальше и поместить несколько JAR (и WAR ...) в EAR и развернуть их.
Таким образом, развертывание делает исполняемый артефакт выполнимым в среде выполнения, в этом случаеJAR виден выбранной JVM.Вполне возможно, у вас может быть много сред выполнения, много клиентов, много машин.Вы строите один раз, развертываете много раз.
На практике мы часто обнаруживаем, что выполнение развертывания - это не просто добавление JAR-файла в Classpath.Вы часто обнаруживаете, что вам необходимо:
- Удалить предыдущие версии JAR, возможно, затем сохранить их наготове, чтобы их можно было восстановить, если что-то случится.
- Сделать доступными другие ресурсы, например.базы данных
- Выполните некоторые настройки среды
- Проверьте развертывание, выполнив какие-то тесты
- Перезапустите зависимые компоненты
- Сохраните журнал аудита развертывания
В нетривиальных случаях часто очень полезно автоматизировать такие шаги, как эти, используя скрипты.