Maven依赖:排除一个类

时间:2012-04-10 09:34:23

标签: maven dependencies

例如,我有依赖:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.6</version>
</dependency>  

我可以排除一个类,例如org/slf4j/Marker.class吗?

3 个答案:

答案 0 :(得分:5)

使用shade plugin

进行尝试

有关why use shadebasic usage

的详细信息

答案 1 :(得分:2)

不可能排除单个班级。在<dependency>代码中,您可以定义<exclusions/>。但是,这些是针对整个依赖项的。

应小心处理阴影插件。通常,在一个地方创建包含所有依赖项的jar并不是一个好习惯,因为如果要将另一个项目中生成的工件用作依赖项,它往往会导致问题。例如,在你的jar中着色slf4j然后根据你在另一个项目中你拥有另一个slf4j的工件会给你带来悲伤。

答案 2 :(得分:2)

您可以更改这些类并在另一个jar /模块中定义它们,这些jar /模块应作为依赖包含在 jar中,该jar提供要排除的类所在的依赖项(Marker.class) 。

Maven记得2.0.9版的类路径排序。