Как предотвратить 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?