来自Apache的两个Maven工件中有四个重复的类: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有没有可能用其他一些工件替换其中的一个,以避免这种重复?我试着用谷歌搜索,但没有找到任何解决方案。相当烦人的问题。
发布于 2013-01-19 00:23:21
在这种情况下,问题不是maven或exclusions (通常是问题所在),而是您很可能使用了错误的beanutils版本。
有一个版本的beanutils jar包含了bean集合,而另一个不包含。具有bean集合的beanutils的maven依赖关系包括commons集合。如果您自己正在使用commons集合,请使用的核心版本,并在maven依赖项中包含commons集合。
下面将对其进行一些解释:http://commons.apache.org/beanutils/
那一页是这样写的:
commons-beanutils.jar -包含所有内容commons-beanutils-core.jar -排除Bean集合类Commons -beanutils-- -仅Bean集合类主要commons-beanutils.jar对Commons集合has有一个可选的依赖项
发布于 2013-01-19 00:08:11
看看这篇文章,它被告知要使用link标签
更新
看看这个给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>发布于 2019-03-12 01:54:43
因此,基本上发生的情况是,您要么从错误配置的jar (两个都拉入,这是多余的)中拉入两个版本,要么从多个依赖中拉入一个版本,另一个拉入另一个版本,冲突!我称之为commons-beanutil的“奇怪的发布系统”问题,因为maven不容易处理这种模式……我的一个修复方法是增加两个版本的依赖项的版本(在我的例子中是"commons-configuration"),或者手动指定commons-configuration的一个特定版本
所以这个mvn dependency:tree
[INFO] +- commons-configuration:commons-configuration:jar:1.6:compile
[INFO] | +- commons-collections:commons-collections:jar:3.2.1:compile (version managed from 3.2)
[INFO] | +- commons-digester:commons-digester:jar:1.8:compile
[INFO] | \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
[INFO] | \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile变成这样:
[INFO] +- commons-configuration:commons-configuration:jar:1.7:compile
[INFO] | +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] | +- commons-lang:commons-lang:jar:2.6:compile
[INFO] | +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | +- commons-digester:commons-digester:jar:1.8.1:compile
[INFO] | \- commons-beanutils:commons-beanutils:jar:1.8.3:compile尽管根据对另一个答案的评论,将"something“添加到使用commons-beanutil 1.9+的版本也可以。
https://stackoverflow.com/questions/14402745
复制相似问题