16

例如我有依赖:

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

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

4

3 回答 3

10

尝试使用阴影插件

为什么使用阴影基本用法的详细信息

于 2012-04-10T09:39:38.837 回答
6

不可能排除一个班级。您可以在<dependency>标签内定义<exclusions/>. 但是,这些是针对整个依赖项的。

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

于 2012-04-11T08:19:52.013 回答
2

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

Maven 会记住从 2.0.9 版本开始的类路径排序。

于 2012-05-14T14:24:12.493 回答