Я работаю над довольно большим проектом Maven. У нас, вероятно, около 70 отдельных артефактов, которые примерно разделены на две библиотеки общего кода и, возможно, десять приложений, которые их используют. Все эти элементы находятся в пространстве имен com.mycompany.*
.
В большинстве случаев мы работаем против сборок моментальных снимков. Итак, чтобы выполнить полную сборку приложения, я мог бы сначала собрать проекты библиотеки, чтобы они были установлены в моем локальном репозитории (как, скажем, mycompany-libname-2.4-SNAPSHOT.jar
).
Проблема в том, что когда я затем собираю приложения. По какой-то причине Maven хочет проверить два основных общедоступных репозитория (maven-net-repo и java-net-repo) на предмет обновлений для всех mycompany-*-SNAPSHOT.jar
артефактов. Конечно, их там нет, и все в конечном итоге возвращается к версиям, которые я только что построил в своем локальном репозитории, но я бы хотел, чтобы Maven прекратил это делать, потому что (а) это заставляет меня чувствовать себя плохим net.citizen для постоянной проверки этих репозиториев на предмет того, чего там никогда не будет, и (б) это добавляет некоторую ненужную и раздражающую сетевую задержку в мой процесс сборки.
Большую часть времени я использовал maven в автономном режиме, чтобы обойти это, но это не идеально, поскольку иногда будет обновляться зависимость от публичной библиотеки. Итак, я ищу решение, которое заставит Maven не проверять обновления из заданных репозиториев для артефактов, которые соответствуют определенным критериям - в этом случае я был бы счастлив, если бы Maven игнорировал либо версии SNAPSHOT, либо артефакты, которые были в com.mycompany
имена.
источник
Кроме того, вы можете использовать
-o
или--offline
в командной строке mvn, которая переведет maven в «автономный режим», поэтому он не будет проверять наличие обновлений. Вы получите предупреждение о том, что не можете получить зависимости, которых еще нет в вашем локальном репо, но ничего страшного.источник
Что-то, что теперь доступно и в maven, это
или короче
источник
set offline := true
на сессии илиoffline := true
вbuild.sbt
.nsu
опция не работает в версии 3.0.3 (см. MNG-5064 ). Чтобы использовать эту опцию надежно, вам может потребоваться обновление как минимум до версии 3.0.4 или версии 3.0.5Обновление: мне, наверное, следовало начать с этого, поскольку ваши проекты - снимки. Это часть семантики SNAPSHOT, которую Maven будет проверять на наличие обновлений при каждой сборке. Статус SNAPSHOT означает, что он нестабилен и может изменяться, поэтому обновления следует проверять. Однако стоит отметить, что Maven super POM конфигурирует централизованное отключение моментальных снимков, поэтому Maven никогда не должен проверять наличие обновлений для SNAPSHOTs на центральном сервере, если вы не переопределите это в своем собственном pom / settings.
Вы можете настроить Maven для использования зеркала для центрального репозитория, это перенаправит все запросы, которые обычно поступают в центральный репозиторий, на ваш внутренний репозиторий.
В свой settings.xml вы должны добавить что-то вроде этого, чтобы настроить свой внутренний репозиторий как зеркало для центрального:
Если вы используете менеджер репозитория, например Nexus, для своего внутреннего репозитория. Вы можете настроить репозиторий прокси для централизованного прокси, поэтому любые запросы, которые обычно поступают в центральный сервер, вместо этого отправляются в ваш репозиторий прокси (или группу репозитория, содержащую прокси), а последующие запросы кэшируются во внутреннем диспетчере репозитория. Вы даже можете установить для тайм-аута прокси-кеша значение -1, чтобы он никогда не запрашивал содержимое из центрального хранилища, которое уже находится в репозитории прокси.
Более простое решение, если вы работаете только с локальными репозиториями, - установить updatePolicy для центрального репозитория на «никогда», это означает, что Maven будет проверять только те артефакты, которых еще нет в локальном репозитории. Затем это можно при необходимости переопределить в командной строке, используя переключатель -U, чтобы Maven проверял наличие обновлений.
Вы должны настроить репозиторий (в вашем pom или профиле в settings.xml) следующим образом:
источник
updatePolicy
Элемент попадает подsnapshots
илиreleases
элемента. См .: maven.apache.org/settings.htmlОчень просто :
В родительском файле Super POM или в файле setting.xml используйте
Это мои советы
источник
У меня были проблемы, похожие на эту,
Установка updatePolicy на «никогда» не сработала. Я решил удалить это репо. ps: я следил за этим руководством по веб-службам (кстати, вероятно, лучший учебник по ws для java)
источник