es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar slf4j del plugin de Gradle.

He creado un plugin de Gradle. Y el archivo build.gradle para él se ve así:

plugins {
    id 'java'
    id 'java-gradle-plugin'
    id 'maven-publish'
}
apply plugin: 'maven'

group 'test.plugin'
version '9.0'

sourceCompatibility = 11.0

repositories {
    mavenCentral()
}

dependencies {
    implementation gradleApi()
}

Cuando intento aplicar este plugin en otro proyecto, las pruebas unitarias fallan debido al siguiente error:

java.lang.ClassCastException: class org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger cannot be cast to class ch.qos.logback.classic.Logger (org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger y ch.qos.logback.classic.Logger están en un módulo sin nombre del cargador ‘app’)

Y el plugin que creé también tiene slf4j debido a Gradle. Necesito excluir slf4j de mi plugin. No puedo encontrar respuestas útiles en Google.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para excluir slf4j de tu plugin gradle, puedes agregar el siguiente fragmento de código a tu archivo build.gradle.

    configurations {
        excludeSlf4j {
           exclude group: 'org.slf4j', module: 'slf4j-api'
        }
    }
    
    dependencies {
        implementation gradleApi()
        implementation group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.30', configuration: 'excludeSlf4j'
    }
    

    Este código excluirá slf4j-api de las dependencias del plugin e importará la biblioteca slf4j-simple en su lugar, que no entra en conflicto con otros proyectos que puedan tener slf4j en sus dependencias. Al hacer esto, deberías ser capaz de solucionar el problema de que tus pruebas unitarias fallen debido a una excepción de lanzamiento de clase.

Comments are closed.