Что касается удаленного репозитория, я думаю, что предыдущие ответы, которые обсуждают очистку SNAPSHOT на регулярной основе, будут работать. Но никто не обратился к вопросу о синхронизации рабочих станций локального разработчика.
Мы еще не начали использовать Maven3, поэтому нам еще предстоит увидеть, как SNAPSHOT начинают собираться на локальных машинах.
Но у нас были разные проблемы с m2eclipse. Когда у нас включено «Разрешение рабочей области» и проект существует в нашей рабочей области, обновления источника обычно удерживают нас на переднем крае. Но мы обнаружили, что очень трудно заставить m2eclipse обновляться с помощью недавно опубликованных артефактов в Nexus. Мы сталкиваемся с подобными проблемами в нашей команде, и это особенно проблематично, потому что у нас очень большой график проекта ... существует множество зависимостей, которых не будет в вашей рабочей области, но которые будут часто публиковаться в SNAPSHOT.
Я почти уверен, что это сводится к проблеме в m2eclipse, где он не обрабатывает SNAPSHOT точно так, как должен. Вы можете увидеть в консоли Maven в eclipse, где m2eclipse сообщает, что пропускает обновление недавно опубликованного SNAPSHOT, потому что у него есть кэшированная версия. Если вы выполните -U из конфигурации запуска или из командной строки, Maven обнаружит изменение метаданных. Но выбор «Обновить снимки ...» должен сообщить m2eclipse, чтобы Maven истек этот кеш. Это, кажется, не проходит мимо. Кажется, есть ошибка, которая подана для этого, если вы хотите проголосовать за нее:
https://issues.sonatype.org/browse/MNGECLIPSE-2608
Вы упомянули об этом в комментарии где-то.
Лучший обходной путь для этой проблемы, по-видимому, заключается в том, что разработчики очищают свои локальные рабочие станции, когда вещи начинают выходить из строя изнутри m2eclipse. Подобное решение для другой проблемы ... Другие сообщали о проблемах с Maven 2.2.1 и 3, поддерживающих m2eclipse, и я видел то же самое.
Я надеюсь, что если вы используете Maven3, вы можете настроить его так, чтобы он извлекал только последний SNAPSHOT и кэшировал его в течение периода времени, указанного в хранилище (или до истечения срока его действия вручную). Надеюсь, тогда вам не понадобится куча SNAPSHOT, сидящих в вашем локальном хранилище.
Это если вы не говорите о сервере сборки, который вручную выполняет mvn install
на них. Что касается того, как предотвратить создание SNAPSHOT в среде, такой как сервер сборки, мы отчасти избежали этой проблемы, когда каждая сборка использует свое собственное рабочее пространство и локальный репозиторий (хотя в Maven 2.2.1 некоторые вещи, такие как Кажется, что POM всегда появляются из репозитория ~ / .m2 /). Дополнительные SNAPSHOT действительно останавливаются только для одной сборки, а затем они сбрасываются (и загружаются снова с нуля). Итак, мы видели, что этот подход в конечном итоге потребляет больше места, но он остается более стабильным, чем решение всех задач из одного репозитория. Этот параметр (в Hudson) называется «Использовать частный репозиторий Maven» и находится под кнопкой «Дополнительно» раздела «Сборка» в конфигурациях проекта, когда вы выбрали сборку с Maven. Вот описание справки для этой опции:
Обычно Хадсон использует местный Maven
хранилище, как определено Maven -
точный процесс, кажется,
без документов, но это
~ / .m2 / хранилище и может быть переопределено
по в
~ / .m2 / settings.xml (см. ссылку
для более подробной информации.) Это обычно означает
что все задания, которые выполняются на
один и тот же узел разделяет один Maven
репозиторий. Преимущество этого в том, что
Вы можете сэкономить место на диске, но
Недостатком этого является то, что иногда
эти сборки могут мешать каждому
Другой. Например, вы могли бы в конечном итоге
неправильно построенные сборки,
только потому, что у вас есть все
зависимости в вашем локальном хранилище,
несмотря на тот факт, что ни один из
репозитории в POM могут иметь их.
Есть также некоторые сообщения о проблемахотносительно одновременных процессов Maven, пытающихся использовать один и тот же локальный репозиторий.
Когда эта опция включена, Хадсон скажет Maven использовать $ WORKSPACE / .repository в качестве локального репозитория Maven.Это означает, что каждая работа получит свой отдельный репозиторий Maven только для себя.Это устраняет вышеуказанные проблемы за счет дополнительного использования дискового пространства.
При использовании этой опции рассмотрите возможность установки диспетчера артефактов Maven, чтобы вам не приходилось слишком часто обращаться к удаленным репозиториям Maven.
Если вы предпочитаете активировать этот режим во всех заданиях Maven, выполняемых на Hudson, обратитесь к описанной здесь методике.
Надеюсь, это поможет - если это не решит вашу проблемупожалуйста, дайте мне знать, где я пропустил.