Это чисто из моего личного опыта!
Допустим, у вас есть проект A (PA) и проект B (PB).PB имеет зависимость от PA через обычный тег maven <dependency>
.
Теперь вы модифицируете PA и компилируете его локально.Если вы не выполните команду maven install
, PB вашего зависимого проекта не сможет получить измененный код - как вы упомянули в своем вопросе об изменении одного из ваших SNAPSHOT.
Как только вы запустите команду install
на maven для PA, maven поместит новые артефакты в репозиторий nexus на локальном компьютере, и в следующий раз, когда вы создадите PB, он обнаружит последнюю модифицированную зависимость PA.
В основном то, что делает maven при создании проекта, сначала идет в локальный каталог репозитория nexus, обычно, но не всегда <M2_HOME>\repository
, для удовлетворения всех зависимостей, если оно не находит, то онообычно идет в локальное репо вашей компании, а затем в публичное репо.Вся эта информация сконфигурирована в файле settings.xml
maven.
Следовательно, то, что вы делаете, является правильным.Сначала вы должны установить локальную сборку SNAPSHOT в своем локальном нексусе, а затем при компиляции зависимых проектов maven позаботится обо всем остальном.
Это НЕ потраченные впустую усилия, вот как Maven работает по замыслу!