2017-02-21 16 views
1

У меня ниже зависимости от моего pom.xml.Как исключить пакет из бана зависимости (используя maven), присутствующего в веб-проекте?

<dependency> 
    <groupId>org.apache.phoenix</groupId> 
    <artifactId>phoenix-server-client</artifactId> 
    <version>4.7.0-HBase-1.1</version> 
</dependency> 

выше для запроса сервера Phoenix interacaction Эта зависимость имеет org.apache.calcite: кальцит-avatica: 1.6.0 переходную зависимость. Зависимость от кальцита-аватики имеет джексон-привязку (2.1.1), одну из ее транзитивной зависимости. Поэтому зависимость jackson-databind (version: 2.1.1) должна быть включена в classpath моего проекта. Но вместо этого все классы в jackson-databind (версия: 2.1.1) включены в банку calcite-avatica. Я объявил jackson-databind (версия: 2.7.2) как прямую зависимость в моем pom.xml. Я могу исключить тег jackson-databind (2.1.1). , < org.apache.phoenix феникс-сервер-клиент 4.7.0-HBase-1,1 com.fasterxml./* ДЖЕКСОНА-DataBind

Но она не становится исключена, так как он имеет были собраны в calcite-avatica: 1,6,0 банок. Есть ли для этого решение. Я попробовал затененный плагин maven. но тщетно.

ответ

1

Существуют различные подходы, ни один из них не является совершенным:.

  • Если вам не нужны кальцит-avatica банку, исключить его (с Maven исключает механизм
  • Если вам нужны некоторые классы от calcite-avatica jar, но не классы jackson-databind, измените порядок, в котором вы объявляете зависимости. Поскольку Java может загружать каждый класс только один раз, либо классы squite calcite-avatica спрятают классы jackson-databind, либо наоборот.
  • Создайте «взломанный» барабан кальцита-аватики, который не содержит удвоенных классов.
  • Если вы действительно нуждаетесь в jackson-databind в двух разных версиях, вам нужно попытаться построить это с помощью плагина оттенков, но это непросто.
+0

Я создал взломанный кальцит-аватика. @JF MeierI нужно знать, в этом случае классы бана зависимости, объявленные в pom.xml, добавляются в последнюю банку. Например, (хотя я уже упомянул, но перефразировал) calcite-avatica объявляет зависимость jackson-databind в своем pom.xml. Но вместо того, чтобы загружать jabaon-databind jar, он помещает классы в calcite activa jar? –

+0

Мне нужно включить кальцит-аватика в мой проект. Мне нужна json-databind jar только в одной версии. –

+0

Некоторые люди используют плагин maven-shade для интеграции всех зависимостей в свою банку - это вызывает проблемы, подобные тем, которые у вас есть выше. Обычный способ - не делать этого. –

 Смежные вопросы

  • Нет связанных вопросов^_^