例如,我有依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
我可以排除一个类,例如org/slf4j/Marker.class
吗?
尝试使用shade plugin
有关why use shade和basic usage的详细信息
不可能排除单个班级。在<dependency>
标签内,您可以定义<exclusions/>
。但是,这些是针对整个依赖项的。
应小心处理阴影插件。通常,在一个地方创建包含所有依赖项的jar并不是一个好习惯,因为如果要将另一个项目中生成的工件用作依赖项,它往往会导致问题。例如,在你的jar中着色slf4j,然后根据你在另一个项目中你拥有另一个slf4j的工件,会给你带来悲伤。
您可以更改这些类并在不同的jar /模块中定义它们,这些jar /模块应作为依赖项包含在提供要排除的类所在的依赖项的jar之前(Marker.class)。
Maven记得版本2.0.9中的类路径排序。