maven - pom - was cached in the local repository resolution will not be reattempted until the update interval of




Когда maven говорит, что «разрешение не будет повторно загружено до истечения интервала обновления MyRepo», где указан этот интервал? (8)

В Eclipse:

  • Щелкните правой кнопкой мыши по проекту -> Запустить как -> Maven Build -> Укажите цель как «чистая установка» - >> Необходимые артефакты будут загружены в локальный репозиторий.
  • - >> Когда строится УСПЕХ !! -> Щелкните правой кнопкой мыши Project-> Maven -> Update Project (проверьте чистоту).

С maven я иногда ударяю артефакт, который исходит из некоторых сторонних репо, которые я еще не создал или не включил в свой репозиторий.

Я получаю сообщение об ошибке от клиента maven, говоря, что артефакт не найден:

Не удалось найти org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 в http://myrepo:80/artifactory/repo был кеширован в локальном репозитории, разрешение не будет повторно загружено до тех пор, пока интервал обновления из MyRepo истек или обновление принудительно -> [Справка 1]

Теперь я понимаю, что это значит, и может просто повторно запустить мою команду с -U , и вещи обычно отлично работают оттуда .

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

Я пытаюсь выяснить, есть ли какое-то место, где я могу изменить этот update interval .

  1. Является ли update interval , указанный в этом сообщении об ошибке, настройкой на стороне клиента или на стороне сервера?
  2. Если на стороне клиента, как мне его настроить?
  3. Если на стороне сервера, кто-нибудь знает, как / если Nexus / Artifactory выставляют эти настройки?

В соответствии с настройкой:

updatePolicy: этот элемент указывает, как часто должны возникать обновления. Maven будет сравнивать местную метку времени POM (хранящуюся в файле maven-metadata хранилища) на пульте дистанционного управления. Возможные значения: всегда, ежедневно (по умолчанию), интервал: X (где X - целое число в минутах) или никогда.

Пример:

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>
  ...
</settings>

Если вы используете Eclipse, перейдите в Windows -> Preferences -> Maven и снимите флажок «Не устанавливать обновления для удаленных репозиториев».

Это также работает с Maven 3.


Если вы используете Nexus в качестве репозитория прокси, у него есть параметр «Not Found Cache TTL» со значением по умолчанию 1440 минут (или 24 часа). Уменьшение этого значения может помочь (Хранилища> Конфигурация> Настройки срока действия).

Дополнительную documentation см. В documentation .


Несколько уместно. Я получал

"[ERROR] Не удалось выполнить цель проекта projectproject: не удалось разрешить зависимости для проекта myjarname: jar: 1.0-0: Не удалось найти myjarname-core: bundle: 1.0-0 в http://repo1.maven.org/maven2 был кэширован в локальном репозитории, разрешение не будет повторно загружено до тех пор, пока не истечет интервал обновления центрального элемента или не будет принудительно обновлено обновление -> [Справка 1] "

Эта ошибка была вызвана случайным использованием Maven 3 вместо Maven 2 . Просто подумал, что это может немного сэкономить, потому что мой первоначальный поиск в Google привел меня на эту страницу.


У меня была связанная с этим проблема, но ответ Рагхурама помог. (У меня пока нет достаточной репутации, чтобы проголосовать за его ответ). Я использую Maven в комплекте с NetBeans и получаю то же самое «... был кэширован в локальном репозитории, разрешение не будет повторно загружено до тех пор, пока не истечет интервал обновления нексуса или не будет принудительно принудительно -> [Помощь 1]» ,

Чтобы исправить это, я добавил <updatePolicy>always</updatePolicy> в свой файл настроек (C: \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)

<profile>
  <id>nexus</id>
  <!--Enable snapshots for the built in central repo to direct -->
  <!--all requests to nexus via the mirror -->
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </repository>
  </repositories>
 <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </pluginRepository>
  </pluginRepositories>
</profile>

Эта ошибка иногда может вводить в заблуждение. 2 вещи, которые вы можете проверить:

  1. Существует ли реальный JAR для зависимости в репо? В вашем сообщении об ошибке содержится URL-адрес, где он выполняется, идите туда, а затем перейдите в папку, соответствующую вашей зависимости. Есть ли баночка? Если нет, вам нужно изменить свою зависимость. (например, вы могли бы указывать на родительскую зависимость верхнего уровня, когда вы должны указывать на дополнительный проект)

  2. Если банка существует в удаленном репо, просто удалите локальную копию. Он будет находиться в вашем домашнем каталоге (если вы не настроены по-другому) в .m2 / repository (ls -a показать скрытый, если в Linux).


Я использовал эту проблему, удалив соответствующий файл, чтобы загрузить каталог артефактов в моем локальном репо. В следующий раз, когда я запустил команду maven, загрузка артефакта будет снова запущена. Поэтому я бы сказал, что это настройка на стороне клиента.

Сторона Nexus (сторона сервера репо), эта проблема решена, настраивая запланированную задачу. Клиент, это делается с использованием -U , как вы уже указывали.





artifactory