Ответ 1
До Maven 3.0.x Maven не отслеживал происхождение файлов в локальном репозитории.
Это может привести к проблемам с сборкой, особенно если вы создали что-то, что перечислило (теперь мертвый) очень borked репозиторий java.net2... Не только это хранилище изменило выпущенные артефакты (крайне плохая и злая практика), но и опубликованные артефакты в тех же координатах, что и артефакты на центральном, но с различным содержанием (невероятно злые)
Итак, у вас может быть работа с сборкой (потому что у вас есть commons-io: commons-io: 2.0 из центра) уничтожить локальное репо, и сборка завершилась неудачно (потому что теперь вы получаете commons-io: commons-io: 2.0 из java.net2, который был совершенно другим артефактом с различными зависимостями в pom) или наоборот.
Вышеупомянутая ситуация является одним из драйверов для использования менеджера хранилища maven, поскольку это позволяет вам управлять подмножеством репозитория, который вы выставляете ниже по течению, и порядок, в котором артефакты разрешены из нескольких репозиториев (обычно называемых маршрутизацией правила)
В любом случае, когда maven переключился на Aether в качестве уровня доступа к репозиторию, было принято решение начать отслеживать, откуда происходят артефакты.
Итак, с Maven 3.0.x, когда артефакт загружается из репозитория, maven оставляет файл _maven.repositories
для записи, где был разрешен файл. Если вы строите проект, а эффективный список репозиториев не включает в себя местоположение, из которого был устранен артефакт, тогда Maven решает, что это как если бы артефакт не был в кеше и будет пытаться повторно разрешить артефакт...
В версии 3.0.x есть несколько ошибок. Самое критичное из того, как обрабатывается offline
... А именно: когда в автономном режиме maven 3.0.x считает, что нет репозиториев, поэтому всегда найдется несоответствие файла _maven.repositories
!!!
Обходной путь для Maven 3.0.x заключается в удалении этих файлов из локального кеша, например
$ find ~/.m2/repository -name _maven.repositories -exec rm -v {} \;
Побочным эффектом является то, что вы теряете защиту, которую Maven 3.0.x пытается обеспечить.
Хорошей новостью является то, что Maven 3.1 будет иметь требуемое исправление (если мы сможем когда-либо получить наш акт вместе и выпустить выход из двери)
С Maven 3.1, когда в автономном режиме файл _maven.repositories
игнорируется (semi-), а также есть возможность игнорировать этот файл для онлайн-сборки (называемый устаревшим режимом)
На данный момент (1 июня 2013 года) 4-я попытка сократить выпуск, который соответствует требованиям законодательства и тестирования, продолжается... Итак, если предположить, что в 4-й раз повезет, я надеюсь увидеть 3.1. 0-alpha-1, выпущенный через 3-4 дня... Но это может быть более продолжительным, если мы хотим дать изменения в 3.1 достаточно времени, чтобы замачивать, чтобы гарантировать, что сборки не сломаются (произошли изменения в API (случайно - ish - API необходим плагину сайта и зависимостей), от которого зависели авторы плагинов (хотя они и не должны были), поэтому есть потенциал, хотя мы думаем, что у нас есть все основания)
Надеюсь, что ответит на ваш вопрос (и, возможно, еще несколько вы не знали, что у вас есть;-))