如何在Maven <reporting>插件中排除依赖项?

3
我该如何在 Maven 报告插件中排除依赖项?cobertura-maven-plugin 会无意间引入 ch.qos.logback:logback-classic,这会导致构建和运行过程中出现多个 SLF4J 绑定警告。我尝试在插件中插入带有 <exclusions><dependencies>,但是 Maven 不允许在 <reporting> 部分中这样做。感谢任何帮助。以下是相关的 POM。
<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>2.8</version>
            <configuration>
               <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <formats>
                    <format>html</format>
                    <format>xml</format>
                </formats>
            </configuration>
        </plugin>
    </plugins>
</reporting>

“which causes multiple SLF4J bindings warning during build and run.” 这句话是什么意思?插件的类路径和依赖项的类路径是分开的,所以我不理解这句话。你能展示一下日志输出来说明你的意思吗? - khmarbaise
[错误] SLF4J: 类路径包含多个SLF4J绑定。SLF4J: 在[jar:file:/Users/vokuheila/.m2/repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]中找到绑定SLF4J: 在[jar:file:/Users/vokuheila/.m2/repository/org/slf4j/slf4j-log4j12/1.7.12/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]中找到绑定SLF4J: 请参见http://www.slf4j.org/codes.html#multiple_bindings以获取解释。SLF4J: 实际绑定类型为[ch.qos.logback.classic.util.ContextSelectorStaticBinder] - vokuheila
2个回答

1
这是一篇旧文,但我会提供我的解决方案以防其他人遇到同样的问题。在我的pom文件中,我插入了以下内容。
          <dependencies>
                <dependency>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                    <version>1.1.7</version>
                </dependency>
            </dependencies>

在我的 Cobertura 插件定义中,Cobertura 在任何情况下都使用 1.1.7(在我的情况下),请检查您的工件以确认。您只需要在创建插件时明确告诉 Maven 拉取该版本,否则它仍将拉取冲突的版本并显示错误。

0

我已经解决了这个问题,包括在logback依赖项中添加“scope”标签。

这是我的POM部分:

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback-classic-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback-core-version}</version>
        <scope>runtime</scope>
    </dependency>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接