Force maven update
Я импортировал свой рабочий проект на другой компьютер, чтобы он начал загружать зависимости.
Видимо, в то время мое интернет-соединение оборвалось. Теперь я получаю:
Ошибки сборки для комиксов; org.apache.maven.lifecycle.LifecycleExecutionException: не удалось выполнить цель для проекта comicsTest: не удалось разрешить зависимости для проекта comicsTest:comicsTest:war:0.0.1-SNAPSHOT: не удалось разрешить следующие артефакты: org.springframework:spring- контекст:jar:3.0.5.RELEASE, org.hibernate:hibernate-entitymanager:jar:3.6.0.Final, org.hibernate:hibernate-core:jar:3.6.0.Final, org.hibernate:hibernate-commons- аннотации: jar: 3.2.0.Final, org.aspectj: aspectjweaver: jar: 1.6.8, commons-lang: commons-lang: jar: 2.5,
mysql: mysql-connector-java: jar: 5.1.13: сбой при передаче org.springframework:spring-context:jar:3.0.5.RELEASE из http://repo1.maven.org/maven2 был кэширован в локальном хранилище разрешение не будет повторяться до тех пор, пока не истечет интервал обновления центрального сервера или принудительные обновления.
Исходная ошибка: Невозможно передать артефакт org.springframework:spring-context:jar:3.0.5.RELEASE from central ( http://repo1.maven.org/maven2): Ответ не получен после 60000
И я понятия не имею, как заставить Maven для обновления?
27 ответов
mvn clean install -U
-U
означает принудительное обновление зависимостей снимка. Зависимости релиза не могут быть обновлены таким образом.
Если ваш локальный репозиторий каким-то образом испорчен для выпуска jars, а не для снимков (-U
а также --update-snapshots
только обновления снимков), вы можете очистить локальный репо с помощью следующего:
mvn dependency:purge-local-repository
Вы, вероятно, затем хотите очистить и установить снова:
mvn dependency:purge-local-repository clean install
Много дополнительной информации доступно на https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html
-У, похоже, заставить обновление всех зависимостей. Если вы хотите обновить отдельную зависимость без чистой или -U, вы можете просто удалить ее из локального репозитория и затем собрать. Пример ниже для обновления slf4j-api 1.7.1-SNAPSHOT:
rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOT
mvn compile
Все ответы здесь не сработали для меня. Я использовал метод молотка:
find ~/.m2/ -name "*.lastUpdated" | xargs rm
Это решило проблему:-)
На тот случай, если кто-то хочет только обновить зависимости снимка проекта и не хочет устанавливать артефакт:
mvn dependency:resolve -U
Не забудьте повторно импортировать зависимости в вашей IDE. В IDEA вам нужно щелкнуть правой кнопкой мыши по файлу pom и выбрать Maven -> Reimport
Вы можете сделать эффективно из Eclipse IDE
, Конечно, если вы используете его.
Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases
Если вы не уверены, что находится внутри вашего локального репозитория, я рекомендую запустить сборку с опцией:
-Dmaven.repo.local=localrepo
Таким образом, вы гарантированно создадите условия для чистых помещений.
В моем случае сначала я сделал mvn clean install -U
все еще это показывало ту же самую ошибку, тогда я закрыл проект, и agian вновь открыл это. Наконец работал.
Я использовал IntelliJ IDE, и у меня была аналогичная проблема, и для ее решения я щелкнул "Создать источники и обновить папки для всех проектов" на вкладке Maven.
Если вы используете eclipse IDE, то:
- Выберите проект.
Нажмите Alt+F5, появится окно для обновления проекта Maven.
Проверьте - Принудительное обновление снимков / выпусков и нажмите ОК.
Предыдущие версии maven не вызывали принудительную проверку отсутствующих выпусков при использовании -U с mvn clean install, только снимки состояния, хотя более новая версия поддерживает это.
Для тех, кто все еще борется с предыдущей версией, может быть полезно следующее:
В Windows:
cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i
В Linux:
find ~/.m2 -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
Всякий раз, когда maven не может загрузить зависимости по какой-либо причине (подключение / не существует и т. Д.), Он добавит ".error=Could not transfer artifact" в файл dependency-name.lastUpdate в соответствующей папке в каталоге $home/.m2. Удаление этих файлов заставит maven снова попытаться получить зависимости.
mvn clean install -e -U -Dmaven.test.skip=true
-
-e
Подробное исключение -
-U
принудительное обновление -
-DskipTests
не выполняет тестовые случаи, но компилирует классы тестовых случаев для создания соответствующих файлов классов в целевых/тестовых классах. -
-Dmaven.test.skip=true
, не выполняйте тестовые примеры и не компилируйте классы тестовых случаев. Использование maven. тест.skip не только пропускает запуск модульных тестов, но и пропускает компиляцию тестового кода.
Небольшое предложение. Если вы используете компилятор IntelliJ Idea, рекомендуется очистить кеш
Вам необходимо проверить файл settings.xml в разделе <maven_home>/conf
каталог.
Это одна из самых раздражающих вещей в Maven. Для меня происходит следующее: если я добавляю зависимость, запрашивающую больше зависимостей и все больше и больше, но использую медленное соединение, она перестает работать во время загрузки и тайм-аута. Во время ожидания все зависимости, которые еще не получены, помечаются заполнителями в кеше.m2, и Maven не будет (никогда) поднимать их, пока я не удалю запись заполнителя из кэша (как указано), удалив ее.
Насколько я понимаю, в Maven или, точнее, в плагине Eclipse Maven есть ошибка, связанная с этим. Кто-то должен сообщить об этом.
У меня ошибка в другом контексте. Таким образом, мое решение может быть полезным для тех, кто сталкивается с вопросом:
Проблема: я скопировал локальный репозиторий на другой компьютер, который не имеет связи со специальным репозиторием. Поэтому Maven попытался проверить артефакты на предмет неверного хранилища.
Мое решение: удалить файлы _maven.repositories.
-U используется для принудительного обновления Maven Repo. использование
mvn -U clean install
Важно добавить, что главное отличие бега mvn
с -U и без -U в том, что -U
переопределит ваши локальные банки SNAPSHOT удаленными банками SNAPSHOT.
Локальные банки SNAPSHOT, созданные из местных mvn install
в тех случаях, когда у вас есть другие модули вашего проекта, которые генерируют банки.
У меня та же ошибка с зависимостью android-maps-utils. Использование пакета типа aar в разделе зависимостей решит мою проблему. По умолчанию типом является jar, поэтому можно проверить, какой тип зависимости загружается в хранилище.
Для устранения этой проблемы в Eclipse:
1) Добавьте нижеприведенную зависимость в Maven pom.xml и сохраните файл pom.xml.
<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.3.1</version>
</dependency>
2) Перейти к проекту >> Maven >> Обновить проект
выберите проект и нажмите ОК.
3) Необязательный шаг, если он не разрешен до шага 2, затем выполните шаг ниже после выполнения шага 1
Перейти к проекту >> Maven >> Обновить проект >> установите флажок "Принудительное обновление снимков / выпусков"
выберите проект и нажмите ОК.
Я попробовал все ответы здесь, но ничего не получалось. Сначала перезагрузил компьютер, затем запустил mvn clean install -U
, Это решило мою проблему.
Maven выполняет загрузку всех зависимостей вашего проекта в локальное хранилище (папка.m2). Из-за интернет-проблем с вашим локальным репо ваш проект сталкивается с проблемами. Я не уверен, поможет ли это вам наверняка или нет, но вы можете попробовать удалить все файлы в папке хранилища внутри папки.m2. Поскольку в локальном репо ничего не будет, maven будет вынужден снова загрузить зависимости, что приведет к обновлению. Как правило, папка.m2 находится по адресу c:users:[username]:.m2
после использования mvn clean install -U запустите также тест maven, и после этого обновите свой проект, используя проект maven-update, это работает в моем случае
У меня была эта проблема по другой причине. Я пошел в репозиторий maven https://mvnrepository.com/ поисках последней версии ядра core, которая в то время была 5.0.0.M3/ В репозитории была показана эта запись для моего pom.xml:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.0.M3</version>
</dependency>
Наивный дурак, что я, я предположил, что комментарий говорил мне, что банка находится в хранилище по умолчанию.
Тем не менее, после долгих ударов, я увидел заметку чуть ниже xml, в которой говорилось: "Примечание: этот артефакт находится в общедоступном репозитории Alfresco ( https://artifacts.alfresco.com/nexus/content/repositories/public/). "
Таким образом, комментарий в XML полностью вводит в заблуждение. Баночка находится в другом архиве, поэтому Maven не смог ее найти!
Я столкнулся с этим недавно и запустив следующие исправил все проблемы
mvn -fae install
Мы можем принудительно получить последнее обновление релиза и репозитория моментальных снимков с помощью следующей команды:
mvn --update-snapshots clean install
У меня была такая же ошибка и работает mvn install -U
а затем работает mvn install
работал на меня.
mvn clean install -U
не работает тем не мение mvn -U clean
с последующим mvn clean install
делает.