Saltar al contenido

¿Cómo excluir una dependencia del proyecto de los padres en Maven?

Por fin luego de mucho batallar pudimos encontrar el resultado de esta aprieto que tantos lectores de este sitio web han presentado. Si tienes algo que aportar puedes compartir tu información.

Solución:

Creo que en Maven2 no hay forma de lograr esto, porque para eso está la herencia POM. Sin embargo, hay un truco que se me ocurre:

Suponga que tiene derecho a cargar artefactos en su repositorio interno de artefactos. Puede crear un JAR vacío, implementarlo como log4j:log4j, con una versión obviamente anormal (por ejemplo, log4j:log4j:9999). Agregue dicha dependencia en su proyecto-hijo. Luego anulará la dependencia del padre para que dependa de un JAR de hecho vacío.

No conozco una forma de excluir una dependencia, pero puede excluirla de la distribución de destino, pero es un truco. Debe cambiar el alcance de la dependencia a algo que pueda excluir en la distribución final.

Entonces, digamos que mi padre dependía de junit 4.8, en mi pom dices:


    junit
    junit
    4.8
    provided

Así que estamos cambiando el alcance a proporcionado. Para obtener una explicación de cómo funciona esto, consulte mi respuesta a NoClassDefFoundError: org/junit/AfterClass durante el procesamiento de anotaciones. Desafortunadamente, esto no afecta la construcción, pero cuando estás copiando las dependencias para la distribución final, puedes usar el excludeScope elemento de configuración para no copiar la dependencia en la distribución final:


maven-dependency-plugin


    
        copy-libs
        package
        
            copy-dependencies
        
        
            $project.build.directory/lib
            provided
        
    

Me he encontrado con la misma pregunta como tú. En mi proyecto, llame al padre pom es parent.pom. parent definió log4j, slf4j así:

       
            org.slf4j
            slf4j-api
            $slf4j-api.version
        
        
            log4j
            log4j
            $log4j.version
        
        
            org.slf4j
            jcl-over-slf4j
            $slf4j-api.version
        

        
            org.slf4j
            slf4j-log4j12
            $slf4j-log4j12.version
        

proyecto hijo invoca alguna dependencia en child.pom. Pero no quiero la dependencia de log4j-1.2.x y quiero aumentar la versión de slf4j.

Entonces. Agrego la dependencia del padre.


        parent
        myartifactId
        $my parent version

y use exclusiones para quitar el log4j


        parent
        myartifactId
        $my parent version
        
            
                log4j
                log4j
            
        

y agregue explícitamente la dependencia de slf4j y log4j2 en child pom

 
        org.slf4j
        slf4j-api
        1.7.6
    
    
        org.apache.logging.log4j
        log4j-slf4j-impl
        2.8.2
    
    
        org.apache.logging.log4j
        log4j-api
        2.8.2
    

    
        org.apache.logging.log4j
        log4j-core
        2.8.2
    

    
        com.lmax
        disruptor
        3.3.4
    

entonces usa dependencia mvn:árbol para mostrar la lista de dependencias, sigue viendo el log4j

[INFO] +- org.apache.kafka:kafka_2.10:jar:0.8.2.0:compile
[INFO] |  +- com.yammer.metrics:metrics-core:jar:2.2.0:compile
[INFO] |  +- org.scala-lang:scala-library:jar:2.10.4:compile
[INFO] |  +- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
[INFO] |  |  +- org.slf4j:slf4j-log4j12:jar:1.7.5:compile
[INFO] |  |  +- log4j:log4j:jar:1.2.17:compile

bueno, agreguemos las exclusiones de esa dependencia… eliminemos a este tipo.

    
        org.apache.kafka
        kafka-clients
        0.10.1.1
        
            
                log4j
                log4j
            
        
    

luego ejecute el comando nuevamente para verificar la lista de dependencias. ¡OK! claro ~

Espero que te pueda ayudar :>

valoraciones y comentarios

Nos puedes ayudar nuestra ocupación añadiendo un comentario y dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *