Как я могу использовать Maven для получения последней версии Hibernate? - PullRequest
35 голосов
/ 05 августа 2009

У меня проблемы с получением последней версии Hibernate через зависимость Maven. Похоже, что последняя версия, которую я могу получить из центрального репозитория Maven, - это 3.2.6.GA, и мне интересно использовать 3.3.2.GA, которая является последней версией, показанной на сайте hibernate.org. Когда я изменяю свою зависимость от спящего режима до этой последней версии в pom.xml моего проекта, я получаю следующую ошибку при запуске сборки Maven:

Missing:
----------
1) org.hibernate:hibernate:jar:3.3.2.GA

  Try downloading the file manually from the project website.

  Then, install it using the command:
      mvn install:install-file -DgroupId=org.hibernate -DartifactId=hibernate -D
version=3.3.2.GA -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there:

      mvn deploy:deploy-file -DgroupId=org.hibernate -DartifactId=hibernate -Dve
rsion=3.3.2.GA -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[
id]

Как только я это делаю, я продолжаю получать ошибки, указывающие на то, что мне нужно добавить зависимость javassist, затем мне нужно обновить мою зависимость hibernate-validator, которая также должна быть установлена ​​локально, и в этот момент я остановился и огляделся чтобы увидеть, есть ли лучший способ, возможно, указав Maven на JBoss / Hibernate-репозиторий и т. д. Это действительно кажется головной болью по сравнению с другими значительными открытыми пакетами, которые я использую, такими как Spring или JUnit - когда появляется новая версия Отпустил все, что я делаю, это обновил номер версии в элементе зависимости, и он просто работает.

Я попытался добавить приведенную ниже декларацию репозитория в мой pom.xml, но без радости:

<repositories>
    <repository>
        <id>jboss</id>
        <url>http://repository.jboss.org/maven2</url>
    </repository>
</repositories>

Я искал в Google и почти ничего не помогало. Может кто-нибудь предложить наиболее простой способ использования последних версий hibernate или hibernate-core (3.3.2.GA), hibernate-validator (3.1.0) и hibernate-annotations (3.4.0)?

Ответы [ 7 ]

36 голосов
/ 25 мая 2011

JBoss начал синхронизировать свое собственное репо с Maven central как , опубликованное в блоге сообщества JBoss , поэтому теперь доступны артефакты hibernate без необходимости добавлять репозиторий JBoss в pom.xml или репозиторий. менеджер.

Результат поиска для hibernate-core :

search result for hibernate-core

Чтобы добавить Hibernate Core 3.6.3 в свой проект, просто добавьте следующий фрагмент в pom:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.3.Final</version>
</dependency>
16 голосов
/ 06 августа 2009

У вас проблемы, потому что org.hibernate: hibernate: 3.3.2.GA - это POM-агрегатор, используемый для сборки остальных модулей, на самом деле это не jar. Похоже, рефакторинг произошел после 3.2.7, и это отбросило людей. Для справки запись в блоге намекает на проблемы, с которыми они продвигали Hibernate на центральный сервер, и может объяснить изменение.

Если вы заглянете в репозиторий JBoss , вы увидите, что модули гибернации для 3.3.2.GA размещены , они просто размещены как отдельные артефакты, гибернация -core, hibernate-ehcache и т. д. Итак, ваше объявление репозитория правильное, вам просто нужно точно настроить объявления зависимостей, чтобы учесть это изменение.

Хранилище JBoss содержит hibernate-annotations-3.4.0.GA , hibernate-validator-3.1.0.GA и hibernate-core-3.3.2 .GA среди других. Попробуйте добавить конкретные артефакты в POM и использовать репозиторий JBoss, как вы уже объявили.

Существует также hibernate-зависимости pom, который обеспечивает транзитивные зависимости для большинства артефактов гибернации (включая ядро). Поэтому самое простое, что можно сделать, это заменить существующее объявление зависимости hibernate на hibernate-dependencies

Ваши зависимости в итоге будут такими ...

<dependencies>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-dependencies <!--or hibernate-core--></artifactId>
    <version>3.3.2.GA</version>
    <type>pom</type>
    <!--hibernate-dependencies is a pom, not needed for hibernate-core-->
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.4.0.GA</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>3.1.0.GA</version>
  </dependency>
  ...
  <!--any other hibernate deps not inherited transitively-->

Чтобы сделать вашу жизнь проще, вы можете определить все эти зависимости hibernate в проекте, называемом (hibernate-all), а затем ссылаться на этот единственный проект для всех ваших проектов, использующих hibernate (конечно, было бы неплохо, если бы команда hibernte предоставила этот проект в любом случае).

4 голосов
/ 05 августа 2009

Это расстраивает, но новых версий просто нет, и давно их не было. Ирония заключается в том, что артефакты Hibernate имеют некоторые довольно сложные взаимозависимости и хорошо документированные минимальные версии этих зависимостей, которые в идеале были бы представлены как POM Maven. Вместо этого мы должны сами загрузить двоичные файлы и попытаться выразить их локально.

2 голосов
/ 13 декабря 2012

Вы можете использовать зависимость в вашем pom.xml

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.2.6.ga</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.3.1.GA</version>
        </dependency>
1 голос
/ 05 ноября 2013

Этот вопрос давно устарел: все выпуски Hibernate доступны в Maven Central с годами.

Проверьте www.hibernate.org для получения последних координат Maven (не доверяйте предложениям вашей IDE).

0 голосов
/ 01 декабря 2011

новичок в этом и игра с ним. У меня нет полного решения, НО:

Казалось, что мне удалось разрешить несколько зависимостей, добавив http://repository.jboss.com/maven3/ вместо maven 2.

для тех, кто остается проблематичным, можно в качестве последней капли загрузить недостающие файлы с сайта maven, например, просмотреть:

http://repo1.maven.org/maven2/org/hibernate/hibernate-core/3.6.8.Final/

(да, я пытался установить этот и другие разумные пути в качестве источника хранилища, но безуспешно ...)

чтобы установить этот jar в вашу сборку maven, сделайте что-то вроде:

mvn install:install-file -Dfile=path/to/jar/hibernate-core-3.6.8.Final.jar -DgroupId=org.hibernate -DartifactId=hibernate-core -Dversion=3.6.8-Final -Dpackaging=jar

справка: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

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

0 голосов
/ 05 августа 2009

jar-файлы отсутствуют в хранилище, возможно, поэтому последняя версия hibernate отсутствует в основном хранилище

...