Как предотвратить maven для разрешения зависимостей в локальном репозитории - PullRequest
10 голосов
/ 05 мая 2010

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

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

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

Ответы [ 2 ]

16 голосов
/ 06 мая 2010

Есть ли способ сказать 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

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

2 голосов
/ 05 мая 2010

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

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