2012-04-10 3 views
7

Например, у меня есть зависимость:Maven зависимостей: исключить один класс

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
</dependency> 

Могу ли я исключить один класс, например org/slf4j/Marker.class?

+0

'исключить' на каком этапе - скомпилировать или упаковать? – Raghuram

+0

упаковка в .ear, используя maven-ear-plugin – Ilya

+1

hmm! то, что вам нужно в .ear, это 'slf4j-api.jar' без указанного класса. Для этого нет простого способа. – Raghuram

ответ

3

За исключением одного класса в не представляется возможным. В пределах <dependency> тегов вы можете определить <exclusions/>. Однако они предназначены для целых зависимостей.

Теневой плагин следует обрабатывать с осторожностью. Как правило, не рекомендуется создавать банку, содержащую все ваши зависимости, в одном месте, поскольку она приводит к проблемам, если вы хотите использовать полученный артефакт в другом проекте в качестве зависимости. Например, затенение slf4j в вашей банке, а затем в зависимости от вашего артефакта в другом проекте, где у вас есть еще один slf4j, принесет вам печаль.

2

Вы можете изменить эти классы и определить их в другом банке/модуле, который должен быть включен как зависимость до банку, которая обеспечивает зависимость, в которой находится ваш класс, который должен быть исключен (Marker.class).

Maven запоминает порядок прохождения классов из версии 2.0.9.

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