我正在使用maven shade插件来构建超级jar。但是,我想排除log4j-sl4j12 jar,因为它在我的风暴群集中产生了冲突。我使用下面的插件来排除罐子。
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>org.slf4j:*</exclude>
</excludes>
</artifactSet>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.org.SomeClass</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
现在,当我执行maven包时,日志显示它实际上是排除了jar。 [INFO]从阴影jar中排除org.slf4j:slf4j-log4j12:jar:1.7.12。 [INFO]从阴影罐中排除org.slf4j:slf4j-api:jar:1.7.12。
但是,我的最后一个jar仍然有这些类文件。我知道一个替代解决方案,我可以从依赖项中排除jar,但为此,我将必须知道具有slf4j jar的每个依赖项并明确地从它们中的每一个中排除它。任何人都可以解释为什么排除artifactSet不起作用?