Дублирующие классы в коллекциях и коллекциях
В двух артефактах Maven из Apache есть четыре повторяющихся класса: commons-beanutils:commons-beanutils:1.8.3
и commons-collections:commons-collections:3.2.1
:
org.apache.commons.collections.ArrayStack
org.apache.commons.collections.Buffer
org.apache.commons.collections.BufferUnderflowException
org.apache.commons.collections.FastHashMap
Можно ли заменить один из них каким-либо другим артефактом, чтобы избежать дублирования? Я пытался google, но не нашел никакого решения. Довольно неприятная проблема.
Ответы
Ответ 1
В этом случае проблема не в maven или исключениях (как правило, это проблема), но вы скорее всего используете неправильную версию beanutils.
Существует версия beanutils jar с включенными bean коллекциями, а другая - нет. Зависимости maven для beanutils с коллекциями bean включают коллекции коллекций. Если вы используете коллекцию Commons самостоятельно, используйте основную версию и включайте коллективные коллекции в зависимостях maven.
Вот где это объясняется немного: http://commons.apache.org/beanutils/
Эта страница говорит об этом:
commons-beanutils.jar - contains everything
commons-beanutils-core.jar - excludes Bean Collections classes
commons-beanutils-bean-collections.jar - only Bean Collections classes
The main commons-beanutils.jar has an optional dependency on Commons Collections
Ответ 2
Посмотрите на эту статью ссылка она сообщает использовать тег exclude
UPDATE
посмотрите на link2
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:*</exclude>
<exclude>*:xml-apis</exclude>
<exclude>org.apache.maven:lib:tests</exclude>
<exclude>log4j:log4j:jar:</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
Ответ 3
Удалите пакет коллекции из beanutils JAR, он работал у меня:)