2012-10-09 17 views
15

Czy istnieje sposób, na przykład wtyczka Maven, która może pobrać listę niepożądanych/czarnych wykazów zależności (bezpośrednie i przechodnie) i nie powiedzie się kompilacji, jeśli wykryje jedną z wymienionych zależności?Czarna lista Maven zależności

W moim projekcie bezwzględnie chcemy pozbyć się Apache Commons Logging i zastąpić go mostem JCL SLF4J. Jestem świadomy, że musimy wykluczyć niepożądane deps samemu, ale chciałbym, aby kompilacja się nie powiodła, jeśli ktoś doda zależność, która spowoduje uzależnienie na czarnej liście.

Odpowiedz

17

Możesz zablokować niektóre zależności za pomocą maven-enforcer-plugin.

Oto ich przykład z aktualizacjami wykluczającymi rejestrowanie Apache Commons.

<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> 

Wyjście podczas uruchamiania mvn install będą:

[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. 

To wszystko kończy się BUILD FAILURE.

2

Tak, enforcer plugin obsługuje to z regułą bannedDependencies.

+0

Kolejną moją ulubioną jest reguła [banDuplicateClasses] (http://mojo.codehaus.org/extra-enforcer-rules/banDuplicateClasses.html) w bibliotece reguł egzekwowania kodu Codehaus. Wykryłoby to duplikaty klas wprowadzone przez zależności na obu 'commons-logging' i' jcl-over-slf4j'. – Ramon

Powiązane problemy