Проблема зависимости Hibernate при разборе maven и xml - PullRequest
4 голосов
/ 19 августа 2010

Я пишу внутреннее веб-приложение GWT-Hibernate для нашей группы разработчиков.

Ранее у меня были инструменты для анализа файлов XML, представляющих конфигурацию клиента, собранную в поле для анализа.Теперь я пытаюсь добавить интерфейс пользовательского интерфейса для группы поддержки.Код синтаксического анализа XML использует классы xpath и org.w3c.dom для использования файлов конфигурации после слияния пользовательского интерфейса и анализа кода в одном проекте, с которым я столкнулся с проблемой зависимости.Hibernate 3.5.1 зависит от dom4j, который использует старую версию xml-apis.В банке xml-apis есть старые версии классов org.w3c.dom, настолько старые, что один из методов, которые я использую при разборе XML, недоступен.

Метод org.w3c.dom.Node.getTextContext, который недоступен в старых классах 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...

Зависимость maven: дерево показывает проблему, hibernate, dom4j, xml-apis 1.0.b2.

[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

Предложения по наилучшему способу решения этой проблемы?

  1. Конфигурация зависимостей Maven?Я новичок в maven, так что будьте откровенны.
  2. Разбор XML с использованием другого API?

Заранее спасибо.

1 Ответ

5 голосов
/ 19 августа 2010

Я не знаю, какие версии вам подойдут, но могу контролировать версии транзитивных зависимостей, объявив их в элементе <dependencyManagement>:

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

Вот что вы получите:

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

Но, как я уже писал, я не знаю, какая версия подойдет для ваших нужд и имеют ли они обратную совместимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...