2012-10-09 21 views
15

¿Hay alguna manera, por ejemplo,? un complemento Maven que puede tomar una lista de dependencias listadas/no deseadas (directas y transitivas) y falla la compilación si detecta una de las dependencias enumeradas?Dependencias de Blacklist Maven

En mi proyecto, estrictamente queremos deshacernos de Apache Commons Logging y reemplazarlo con SLF4J JCL Bridge. Soy consciente de que tenemos que excluir los datos no deseados nosotros mismos, pero me gustaría que fallara la construcción si alguien agrega una dependencia que trae la lista negra de la dependencia.

Respuesta

17

Puede prohibir algunas dependencias con el maven-enforcer-plugin.

Aquí está su ejemplo con actualizaciones para su exclusión de 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> 

La salida cuando se ejecuta mvn install será:

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

Todo termina con un BUILD FAILURE.

2

Sí, el enforcer plugin lo admite con su regla bannedDependencies.

+0

Otro de mis favoritos es la regla [banDuplicateClasses] (http://mojo.codehaus.org/extra-enforcer-rules/banDuplicateClasses.html) en la biblioteca de reglas de Codehaus extra enforcer. Esto detectaría las clases duplicadas introducidas por las dependencias en 'commons-logging' y' jcl-over-slf4j'. – Ramon

Cuestiones relacionadas