Представьте, что у нас есть Lib .jar и два исполняемых jar-файла - App1 и App2, которые зависят от Lib .jar во время компиляции. Наша текущая ситуация такова, что всякий раз, когда мы меняем реализацию Lib (сохраняя при этом подписи нетронутыми), мы также должны менять App1 и App2: хотя исходный код в самих исполняемых файлах вообще не меняется, мы все еще требуется обновить номер версии Lib в pom-файле каждого исполняемого файла, увеличить номер каждой исполняемой версии и повторно развернуть их - здоровенно.
Я представляю себе лучшую ситуацию, в которой после изменения реализации Lib развертывается jar-библиотека Lib и исполняемые файлы необходимо перезапустить только в производственной среде, чтобы принять эти изменения - нет необходимости изменять pom каждого исполняемого файла; нет необходимости создавать новые исполняемые фляги; нет необходимости развертывать новые исполняемые файлы jar в среде prod.
Как можно улучшить эту ситуацию? Мы используем Maven в качестве нашей системы сборки.
Обратите внимание, что мы бы предпочли подход, при котором библиотека загружается в той же JVM, что и каждый из исполняемых файлов - мы не хотим иметь архитектуру веб-службы с реализацией Lib, работающей на другой виртуальной машине.
Кроме того, учтите, что мы также поддерживаем исполняемые файлы и разрабатываем их на наших рабочих столах, т. Е. В IDE, запускаем команды maven в командной строке и т. Д. c, и мы хотели бы сохранить эту возможность.
Спасибо.