Должен ли я написать репозитории в моем pom.xml? - PullRequest
10 голосов
/ 19 января 2012

Я новичок в Maven.Если я начну новый проект с Maven, я должен знать какие-либо URL репозитория, чтобы он работал?

Например, в этом руководстве Hibernate http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html говорится о том, как создать пример проекта с текстом pom.xml.,Но этот pom.xml не содержит никаких репозиториев.

Итак, мой плагин m2eclipse сообщает, например, Project build error: 'dependencies.dependency.version' for org.hibernate:hibernate-core:jar is missing., для всех тегов зависимостей в pom.xml

Это из-за отсутствия репозиториев?

Где узнать URL репозиториев?Есть ли один большой репозиторий?Почему он не включен по умолчанию?

ОБНОВЛЕНИЕ 1 Здесь сказано, что Maven должен использовать "центральный" репозиторий по умолчанию: http://maven.apache.org/guides/introduction/introduction-to-repositories.html

У меня естьискал там артефакт с кодом гибернации и нашел его.Итак, этот артефакт ЕСТЬ в центральном хранилище.Моим мавеном говорит, что зависимость не найдена.Следовательно, он не использует свой центральный репозиторий.Почему?

Ответы [ 2 ]

16 голосов
/ 20 января 2012

Видимо, ваша зависимость от Hibernate отсутствует * Тег 1001 *:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.6.9.Final</version> <!-- this line is missing -->
</dependency>

Обратите внимание, что вам не нужно указывать версию зависимостей, ранее объявленных в <dependencyManagement>.

Старый ответ:

Каждый сценарий сборки (не только с Maven) должен быть воспроизводимым и независимым от среды. Стандартный pom.xml (называемый super pom ), от которого наследуется каждый pom.xml, уже определяет основной центральный репозиторий Maven:

<repositories>
  <repository>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <layout>default</layout>
    <url>http://repo1.maven.org/maven2</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

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

Суть в следующем: если выможете построить проект с полностью пустым хранилищем, ваш pom.xml в порядке.

1 голос
/ 04 сентября 2014

Не рекомендуется определять репозитории в файлах POM, так как это вызывает много проблем (Maven будет искать в этих репозиториях ЛЮБОЙ артефакт, даже те, которые доступны в Central, плохая переносимость, ...)

Лучший подход : настройте менеджер хранилища (Artifactory, Nexus) и отредактируйте файл settings.xml, чтобы использовать менеджер хранилища в качестве зеркала.

Второй наилучший подход : Определите необходимые репозитории в файле settings.xml, а не в файлах pom.xml.

Хранилища в poms - плохая идея.

...