java - 黑名单 Maven 依赖项

标签 java maven maven-3

有没有办法,例如一个 Maven 插件,它可以获取不需要的/黑名单依赖项(直接和传递)的列表,如果它检测到列出的依赖项之一,则构建失败?

在我的项目中,我们非常希望摆脱 Apache Commons Logging 并将其替换为 SLF4J JCL Bridge。我知道我们必须自己排除不需要的依赖项,但如果有人添加了引入黑名单依赖项的依赖项,我希望构建失败。

最佳答案

您可以使用 maven-enforcer-plugin 禁止某些依赖项.

这是他们的示例,其中包含用于排除 Apache Commons Logging 的更新。

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.1.1</version>
        <executions>
          <execution>
            <id>enforce-banned-dependencies</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>commons-logging:commons-logging</exclude>
                  </excludes>
                </bannedDependencies>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

运行 mvn install 时的输出将是:

[WARNING] Rule 1: org.apache.maven.plugins.enforcer.BannedDependencies failed with message:
Found Banned Dependency: commons-logging:commons-logging:jar:1.1.1
Use 'mvn dependency:tree' to locate the source of the banned dependencies.

一切都以BUILD FAILURE结束。

关于java - 黑名单 Maven 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794049/

相关文章:

java - 我可以在不更改 stateless4j 中的状态的情况下执行操作来响应事件吗?

java - 如果找不到元素,我该如何继续我的脚本?

java - 如何从另一个类的构建器中引用枚举字段?

java - opennlp 安装 - 没有找到适合火车的方法

java - mvn tomcat7 :deploy not work if no restart tomcat

java - 本地存储库中缺少 tools.jar 会破坏 m2eclipse

maven项目中的javafx应用

java - 这两个代码片段之间有区别吗?如果有区别是什么?

spring-boot - 是否可以从 Maven 多模块项目的父模块中的配置文件夹加载 Spring-Boot 属性?

maven - 如何从 maven 中的组中排除所有 Artifact ?