Я работаю над большим проектом, который имеет много зависимостей, и многие из них являются зависимостями SNAPSHOT. А из-за зависимостей моментальных снимков сборка занимает огромное количество времени (около часа), поскольку для каждой зависимости необходимо проверить, обновляется ли она в удаленной артефакте или нет, даже если версия моментального снимка не изменилась. С выпусками версий проблем не возникает, так как только если версия обновляется, то проверяется только удаленная, в противном случае используются локально доступные файлы jar из .m2
По сравнению с описанным выше сценарием, если я делаю автономную сборку с флагом -o, когда у меня есть все зависимости, доступные в моем локальном .m2, сборка занимает всего около 5-10 минут, что экономит около 40-45 минуты сборки. Но поскольку проект большой, и над ним работают многие, всякий раз, когда я извлекаю изменения, могут быть некоторые изменения кода, которые требуют последнего снимка и разрывов автономной сборки, поскольку даже одно несоответствие может привести к разрыву сборки.
Итак, чтобы решить эту проблему, я думаю о следующем подходе: 1. Всегда собирать в автономном режиме, используя флаг -o. 2. Создайте некоторый внешний сценарий (вероятно, в nodejs), который будет периодически продолжать сканирование, если зависимости, указанные в pom, обновляются на удаленном артефакте. Если да, потяните в локальный .m2, иначе ничего не делайте.
Есть ли лучшая альтернатива этому? Также, как только я выясню, какой артефакт обновлять, каким способом я могу принудительно обновить только этот конкретный артефакт без транзитивных зависимостей? При вышеупомянутом подходе все еще есть вероятность разрыва сборки, если какие-либо транзитивные зависимости будут изменены, но это случается не часто, и в этом случае мне придется запускать полную сборку в режиме онлайн.
Я думал о настройке локального прокси-сервера-артефакта, но в этом сценарии это не поможет, поскольку для разрешения снимка это будет в любом случае go для удаленного хранилища. Если я сохраню время кеширования дольше, снова появятся шансы потерять изменения и прервать сборку.