禁止依赖

此规则检查依赖关系,如果找到任何匹配的排除项,则失败。

此规则支持以下参数:

  • searchTransitive - 如果应该检查传递依赖。默认为真。
  • excludes - 要禁止的工件列表。格式为 groupId[:artifactId][:version][:type][:scope][:classifier] 其中 artifactId、版本、类型、范围和分类器是可选的。通配符可用于替换整个部分或部分部分。例子:
    • org.apache.maven
    • org.apache.maven:badArtifact
    • org.apache.maven:artifact:badVersion
    • org.apache.maven:*:1.2 (不包括1.2及以上版本,相当于 [1.2,) )
    • org.apache.maven:*:[1.2](明确排除版本 1.2)
    • org.apache.maven:*:*:jar:test
    • *:*:*:jar:编译:测试
    • org.apache.*:maven-*:*
  • 包含 - 要包含的工件列表。这些是排除的例外。它旨在允许使用通配符的广泛排除规则并使用包含进行微调。如果没有排除任何内容,则包含无效。换句话说,仅包括从匹配排除规则的工件中减去。

    例如,要禁止除 xerces-api 之外的所有 xerces,您将排除“xerces”(groupId)并包括“xerces:xerces-api”

  • message - 如果规则失败,则向用户发送可选消息。

示例插件配置:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>enforce-banned-dependencies</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.apache.maven</exclude>
                    <exclude>org.apache.maven:badArtifact</exclude>
                    <exclude>*:badArtifact</exclude>
                  </excludes>
                  <includes>
                    <!--only 1.0 of badArtifact is allowed-->
                    <include>org.apache.maven:badArtifact:1.0</include>
                  </includes>
                </bannedDependencies>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

忽略传递依赖的示例插件配置:

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