web-dev-qa-db-fra.com

Comment puis-je utiliser Maven pour obtenir la dernière version d'Hibernate?

J'ai du mal à obtenir la dernière version d'Hibernate via la dépendance Maven. Il semble que la dernière version que je puisse extraire d'un référentiel central Maven est la 3.2.6.GA, et je suis intéressé par l'utilisation de la 3.3.2.GA, qui est la dernière version affichée sur le site hibernate.org. Lorsque je modifie ma dépendance de mise en veille prolongée vers cette dernière version dans le pom.xml de mon projet, j'obtiens l'erreur suivante lorsque j'exécute une build 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]

Une fois que je fais cela, je continue à obtenir des erreurs indiquant que je dois ajouter une dépendance javassiste, puis je dois mettre à jour ma dépendance hibernate-validator, qui doit également être installée localement, et à ce stade, je me suis arrêté et j'ai regardé autour de moi pour voir si il y a une meilleure façon, peut-être de pointer Maven vers un référentiel JBoss/Hibernate, etc. Cela semble vraiment être un casse-tête par rapport à d'autres paquets de cours ouverts importants que j'utilise tels que Spring ou JUnit - quand il y a une nouvelle version publiée tout ce que je faire est de mettre à jour le numéro de version dans l'élément de dépendance et cela fonctionne simplement.

J'ai essayé d'ajouter la déclaration de référentiel ci-dessous dans mon pom.xml mais sans joie:

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

J'ai cherché sur Google et je n'ai pas trouvé grand-chose qui aide. Quelqu'un peut-il suggérer la manière la plus simple d'utiliser les dernières versions de hibernate ou hibernate-core (3.3.2.GA), hibernate-validator (3.1.0) et hibernate-annotations (3.4.0)?

35
James Adams

JBoss a commencé à synchroniser son propre référentiel avec Maven central comme publié sur le blog de la communauté JBoss , donc les artefacts hibernate sont maintenant disponibles sans qu'il soit nécessaire d'ajouter le référentiel JBoss à votre pom.xml ou gestionnaire de référentiel.

Résultat de la recherche pour hibernate-core :

search result for hibernate-core

Pour ajouter Hibernate Core 3.6.3 à votre projet, ajoutez simplement l'extrait de code suivant à votre pom:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.3.Final</version>
</dependency>
36
Robert Munteanu

Vous rencontrez des problèmes car org.hibernate: hibernate: 3.3.2.GA est un agrégateur POM utilisé pour construire le reste des modules, ce n'est pas un pot. Il semble qu'un refactoring se soit produit après la 3.2.7 et que cela a ébranlé les gens. Pour référence, cette entrée de blog fait allusion aux problèmes rencontrés lors de la promotion d'Hibernate au niveau central et peut expliquer le changement.

Si vous regardez dans le référentiel JBoss , vous verrez que les modules d'hibernation pour 3.3.2.GA sont hébergés, ils sont juste hébergés comme des artefacts individuels, hibernate-core, hibernate-ehcache etc. Donc, votre déclaration de référentiel est correcte, il vous suffit de régler avec précision les déclarations de dépendance pour prendre en compte la modification.

Le référentiel JBoss héberge hibernate-annotations-3.4.0.GA , hibernate-validator-3.1.0.GA , et hibernate-core-3.3.2 .GA entre autres. Essayez d'ajouter les artefacts spécifiques à votre POM et utilisez le référentiel JBoss comme vous l'avez déjà déclaré.

Il existe également un hibernate-dependencies pom qui fournit des dépendances transitives à la majorité des artefacts d'hibernation (y compris le noyau). Donc, la chose la plus simple à faire serait de remplacer votre déclaration de dépendance hibernate existante par hibernate-dependencies

Vos dépendances finiraient comme ça ...

<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-->

Pour vous simplifier la vie, vous pouvez définir toutes ces dépendances d'hibernation dans un projet appelé (hibernate-all), puis référencer ce projet unique pour tous vos projets qui utilisent hibernate (bien sûr, ce serait bien si l'équipe hibernte fournissait ce projet de toute façon ).

16
Rich Seller

C'est frustrant, mais les nouvelles versions ne sont tout simplement pas là, et ne l'ont pas été depuis longtemps. L'ironie est que les artefacts Hibernate ont des interdépendances assez complexes et des versions minimales bien documentées de ces dépendances, qui seraient idéalement représentées comme un POM Maven. Au lieu de cela, nous devons télécharger les binaires nous-mêmes et essayer de les exprimer localement.

4
skaffman

Vous pouvez utiliser la dépendance dans votre 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>
2
Vicky

Cette question est dépassée depuis longtemps: toutes les versions d'Hibernate sont disponibles dans Maven Central depuis des années.

Consultez www.hibernate.org pour les dernières coordonnées Maven (ne faites pas confiance aux suggestions de votre IDE).

1
Sanne

nouveau dans ce domaine et jouer avec. Je n'ai pas de solution complète MAIS:

Il semble que j'ai pu résoudre quelques dépendances en incluant http://repository.jboss.com/maven3/ au lieu de maven 2.

pour ceux qui restent problématiques, on peut en dernier recours télécharger les fichiers manquants sur le site maven, par exemple, parcourir:

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

(oui, j'ai essayé de définir ceci et d'autres chemins raisonnables comme source de référentiel, mais sans succès ...)

pour installer ce pot dans votre build maven, faites quelque chose comme:

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

référence: http://maven.Apache.org/guides/mini/guide-3rd-party-jars-local.html

désolé, je viens de réaliser que certains de ces éléments sont redondants, mais j'espère que cela sera utile pour certains de voir les URL supplémentaires possibles. - JB

0
jsh

les bocaux sont manquants dans le référentiel, c'est peut-être la raison pour laquelle la dernière version d'hibernation n'est pas dans le répertoire principal

0
Salandur