共享资源集合和共享资源豆官中的重复类

2022-09-03 02:08:29

Apache 的两个 Maven 工件中有四个重复的类:和:commons-beanutils:commons-beanutils:1.8.3commons-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

是否可以用其他工件替换其中一个以避免这种重复?我试图谷歌,但没有找到任何解决方案。相当烦人的问题。


答案 1

在这种情况下,问题不在于 maven 或排除(这通常是问题所在),但你最有可能使用错误版本的 beanutils。

有一个版本的beanutils罐子包含bean集合,而另一个版本则没有。豆子集合的豆类工具的 maven 依赖项包括公共集合。如果您自己使用共享资源集合,请使用核心版本的共享资源集合,并在 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

看看这篇文章的链接,它告诉使用排除标签

更新

看看这个链接2

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

推荐