Как предотвратить maven для разрешения зависимостей в локальном репозитории

Есть ли способ сказать maven (при выполнении mvn package, mvn site или...) не разрешать зависимости из локального репозитория?

Предыстория этого вопроса: Иногда у меня возникают проблемы, когда ранее кэшированные зависимости (например, SomeProject-0.7-ALPHA) больше не доступны в удаленном хранилище. В моей локальной сборке все по-прежнему работает нормально, так как зависимость кэшировалась ранее. Как только я поделюсь своим pom с другими, у них могут возникнуть проблемы, поскольку у них нет кэшированной версии этой зависимости, и зависимость больше не может быть разрешена из удаленного репозитория.

Любая помощь будет оценена. Заранее спасибо!

2 ответа

Решение

Есть ли способ сказать maven (при выполнении mvn package, mvn site или...) не разрешать зависимости из локального репозитория?

Нет, так работает полное разрешение зависимостей (через локальный репозиторий).

Иногда я сталкиваюсь с проблемами, когда ранее удаленные кэшированные зависимости (например, SomeProject-0.7-ALPHA) больше не доступны в удаленном хранилище.

Извините за указание очевидного, но удаление зависимостей из удаленного репозитория является ужасной практикой и приводит к... ну, типа проблем, с которыми вы сталкиваетесь. Если возможно, избегайте этого.

Как только я поделюсь своим pom с другими, у них могут возникнуть проблемы, поскольку у них нет кэшированной версии этой зависимости, и зависимость больше не может быть разрешена из удаленного репозитория.

Один из способов проверить, что все будет работать для других, - это удалить зависимости проекта, которыми вы собираетесь поделиться, из вашего локального репозитория и повторно разрешить их. Конечно, делать это вручную было бы очень больно, но хорошая новость заключается в том, что плагин Maven Dependency Plugin имеет purge-local-repository цель для этого.

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:purge-local-repository  \
    -DreResolve=true \
    -DactTransitively=true \ 
    -Dverbose=true

Если это не удается, то вы знаете, что чего-то не хватает и больше не можете решить, что, в сущности, вы и хотите знать. Но вы также потеряли его, поэтому сделайте резервную копию вашего хранилища, если это важно для вас.

Основной тест сборки maven - удалить локальный репозиторий.m2/repository и попытаться собрать (пакет mvn) и посмотреть, работает ли он. Если нет, у вас есть другие проблемы здесь. Как уже упоминалось, проблема, казалось, была процессом, с которым вы работаете. Если зависимость больше не доступна из удаленного хранилища, возникает другая проблема. Используете ли вы менеджер репозитория, например, Nexus, Archiva, Artifactory?

Другие вопросы по тегам