Откуда Maven знает, что тянуть против сборки? - PullRequest
0 голосов
/ 11 декабря 2018

Допустим, у меня есть большой проект, и я строю его локально.Половина зависимостей поступает из Maven Central, и половина из них - это разные модули в моем собственном проекте, которые все входят в мой M2.

Если я получаю половину своих SNAPSHOTS, извлекаемых с локального сервера Nexus, но я изменил исходный код одного из SNAPSHOTS, он извлекает снимок Nexus, помещает его в m2, затем компилируетизменили версию и переписали снимок в моем м2?Это напрасное усилие?

1 Ответ

0 голосов
/ 11 декабря 2018

Это чисто из моего личного опыта!

Допустим, у вас есть проект 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 работает по замыслу!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...