黑名单 Maven 依赖项

2022-09-03 01:21:42

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

在我的项目中,我们严格希望摆脱Apache Commons Logging,并用SLF4J JCL Bridge取而代之。我知道我们必须排除不需要的deps,但如果有人添加了一个引入黑名单依赖项的依赖项,我希望构建失败。


答案 1

您可以使用 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


答案 2

是的,执行器插件通过其禁止的独立性规则来支持这一点。


推荐