2010-08-19 8 views
4

J'écris une application web interne GWT-Hibernate pour notre groupe de développement.Problème de dépendance Hibernate avec l'analyse maven et xml

Auparavant, j'avais des outils écrits pour analyser les fichiers XML qui représentaient la configuration du client recueillie sur le terrain pour l'analyse. Maintenant, j'essaie d'ajouter une interface utilisateur pour le groupe de support. Le code d'analyse XML utilise les classes xpath et org.w3c.dom pour consommer les fichiers de configuration, après avoir fusionné l'interface utilisateur et le code d'analyse dans le même projet que celui que j'ai rencontré dans un problème de dépendance. Hibernate 3.5.1 dépend de dom4j qui utilise une ancienne version de xml-apis. Le fichier xml-apis jar contient d'anciennes versions des classes org.w3c.dom, si anciennes que l'une des méthodes que j'utilise dans l'analyse XML n'est pas disponible.

La méthode org.w3c.dom.Node.getTextContext qui n'est pas disponible dans les anciennes classes xml-apis.


Node node = (Node)xpath.evaluate("//probe/configfile[@group=\"daemon.ini\"]/content", data, XPathConstants.NODE); 
     if(node != null) { 
      String content = node.getTextContent(); 
       // Do more work... 

La dépendance Maven: arbre montre la question, mise en veille prolongée, dom4j, 1.0.b2 xml-apis.

 
[INFO] +- org.hibernate:hibernate-core:jar:3.5.1-Final:compile 
[INFO] | +- antlr:antlr:jar:2.7.6:compile 
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile 

Suggestions sur la meilleure façon de résoudre ce problème?

  1. Configuration de dépendance Maven? Je suis nouveau à Maven, alors soyez explicite.
  2. Analyser le XML en utilisant une API différente?

Merci d'avance.

Répondre

4

Je ne sais pas quelle version (s) serait ok pour vous, mais peut contrôler les versions des dépendances transitifs en les déclarant dans l'élément <dependencyManagement>: ce

<dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>xml-apis</groupId> 
     <artifactId>xml-apis</artifactId> 
     <version>1.3.04</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 

Voici que vous obtiendrez:

 
[INFO] +- org.hibernate:hibernate-entitymanager:jar:3.5.4-Final:compile 
[INFO] | +- org.hibernate:hibernate-core:jar:3.5.4-Final:compile 
[INFO] | | +- antlr:antlr:jar:2.7.6:compile 
[INFO] | | +- commons-collections:commons-collections:jar:3.2:compile 
[INFO] | | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | | | \- xml-apis:xml-apis:jar:1.3.04:compile (version managed from 1.0.b2) 

Mais comme je l'ai écrit, je ne sais pas quelle version serait adaptée à vos besoins et si elles sont rétrocompatibles.

+0

Merci, cela a fonctionné parfaitement. J'ai besoin de lire plus de docs maven. – KaizenSoze