Maven пытается загрузить ojdbc14.jar снова — jar уже присутствует в локальном репозитории

#java #maven-2 #maven #maven-plugin #nexus

#java #maven-2 #maven #maven-плагин #nexus

Вопрос:

Когда я запускаю команду mvn eclipse:eclipse, jar зависимостей ojdbc14.jar загружается без каких-либо проблем. Затем, когда я запускаю команду mvn clean install, maven пытается загрузить тот же jar снова — но на этот раз это не удается, говоря, что jar не найден в репозитории.

Что я отметил, так это то, что при первом запуске команды (mvn eclipse: eclipse) Maven просматривает репозиторий Nexus нашей компании — и находит jar. При выполнении команды mvn clean install maven напрямую переходит в центральный репозиторий, не заглядывая в Nexus, и, следовательно, не находит jar.

1) Почему maven пытается загрузить jar, когда он уже присутствует на локальном компьютере?

2) Почему maven пропускает репозиторий Nexus перед переходом в центральный репозиторий?

Ответ №1:

Я подозреваю, что ваша проблема связана с вашим файлом настроек maven. Перехватывает ли ваш файл настроек вызовы для всех удаленных репозиториев, например, так:

 <mirror>
  <!--This sends everything else to /public -->
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <url>http://yournexusrepoaddress</url>
</mirror>
  

В противном случае загруженные pom-файлы могут переопределить, где искать внешние репозитории. Смотрите эту ссылку для получения дополнительной информации. Я надеюсь, что это поможет.

Комментарии:

1. Oystein, спасибо за ответ! По-прежнему ли это позволяет Maven при необходимости обращаться к центральному репозиторию?

2. Нет, это не так, но разве не в этом суть использования сервера Nexus. На мой взгляд, ваш сервер Nexus должен быть центральным проксированием, и тогда все эти артефакты попадают в Nexus, а не на все компьютеры разработчиков и / или серверы сборки. Можно исключить central из catch all с помощью чего-то вроде этого !central, * , но я бы не рекомендовал это. Это говорит о том, что перехватываются все другие репозитории, кроме центрального. Я не уверен, что приведенная выше команда чувствительна к регистру, поэтому она может работать не совсем так, как написано (возможно, вместо этого центральная).