我正在尝试使用Maven Shade插件来构建uber-jar
。我的两个依赖项包括在同一个包中具有相同名称的类,它们具有不同的实现。我知道这是一个坏主意,但我无法控制这些依赖。我知道,如果某个班级出现在A.jar
和B.jar
中,那么B.jar
中的版本就是我要使用的版本。
有没有办法告诉Shade插件在发生冲突时jar
使用哪个?
我目前正在手动构建冲突列表,并使用过滤器将其从A.jar
中排除。这应该有效,但是Shade选择正确的那个会更简单,并且将来会证明。
依赖项是一种传递依赖项,因此在“POM中B
之前列出A
”并不明显。如果您明确列出依赖项,它可能会有效,尽管我无法找到有关重复时它如何选择的任何信息。