Дублирующие классы в коллекциях и коллекциях

В двух артефактах 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, он работал у меня:)