Как использовать принудительно-запрещенные зависимости с управлением зависимостями - PullRequest
0 голосов
/ 04 июля 2019

У меня есть родительский Pom.xml (BOM), который содержит тег DependencyManagement со списком зависимостей, а также некоторые исправления безопасности для транзитивных зависимостей, которые вносят эти зависимости. Что-то вроде:

    <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>x</groupId>
        <artifactId>y/artifactId>
        <version>z</version>
      </dependency>
      <dependency>
        <groupId>a</groupId>
        <artifactId>b/artifactId>
        <version>c</version>
       </dependency> 
    </dependencies>
 </dependencyManagement>

I want the Child projects which use this parent pom to not to use a:b-c.jar artefact in their pom as a dependency.

For this, I thought of using maven-enforcer-plugin with enforce-banned-dependencies like below:



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

Но это не работает. И дочерние poms проекта все еще могут ссылаться на a: b в своем проекте (без указания версии c, конечно).

Может кто-нибудь сказать мне, возможно ли добиться того, что я пытаюсь сделать, используя или не используя этот плагин, или любым другим способом?

...