Как Maven2 знает, где найти плагины? - PullRequest
4 голосов
/ 21 июля 2009

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

метаданные репозитория для: «org.apache.maven.plugins» не может найти в хранилище: myrepo

где myrepo - имя моего хранилища.

Мой вопрос: как Maven узнает, где найти плагины? В моей ошибке есть ссылка на метаданные, какие метаданные ожидаются, где и в каком формате они должны принимать? Мне пока не повезло в поисках документации ...

(меня не интересует простой ответ по использованию центрального репо, я хочу знать, почему myrepo не работает.)

Спасибо!

1 Ответ

7 голосов
/ 21 июля 2009

В корне каждого артефакта (относительный путь к корню хранилища [groupId] / [artifactId]) Maven ожидает найти файл maven-metadata.xml. Этот файл используется для определения доступных версий, последней версии и выпущенной версии.

Например, метаданные общего журнала из repo1 перечисляют все доступные версии и сообщают нам, что версия выпуска 1.1.1 по состоянию на 28 ноября 2008 года.

<?xml version="1.0" encoding="UTF-8"?><metadata>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.1.1</version>
  <versioning>
    <release>1.1.1</release>
    <versions>
      <version>1.0</version>
      <version>1.0.1</version>
      <version>1.0.2</version>
      <version>1.0.3</version>
      <version>1.0.4</version>
      <version>1.1</version>
      <version>1.1.1</version>
    </versions>
    <lastUpdated>20071128191817</lastUpdated>
  </versioning>
</metadata>

Maven загрузит метаданные для каждого удаленного репозитория в ваш локальный репозиторий (с именем maven-metadata- [repo name] .xml), чтобы он мог проверять доступные версии без необходимости каждый раз обращаться к каждому репозиторию. Если вы хотите заставить Maven перезапускать метаданные, вы можете сделать это с помощью ключа -U в командной строке.

Если у вас есть собственный репозиторий, он должен публиковать метаданные такого рода, чтобы Maven мог определить, является ли какая-либо из доступных версий верной. Самый простой способ сделать это - использовать менеджер репозитория, такой как Nexus или Artifactory , который будет управлять метаданными за вас.

...