"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo excluir dependencias transitivas específicas en Gradle?

¿Cómo excluir dependencias transitivas específicas en Gradle?

Publicado el 2024-11-06
Navegar:124

How to Exclude Specific Transitive Dependencies in Gradle?

Excluyendo dependencias transitivas con Gradle

En Gradle, cuando se utiliza el complemento de la aplicación para generar un archivo jar, es posible encontrar dependencias transitivas que es posible que desee excluir. Para lograr esto, se puede emplear el método de exclusión.

Comportamiento predeterminado de exclusión

Inicialmente, se intentó excluir todas las instancias de org.slf4j:slf4j- log4j12 usando el siguiente código:

configurations {
  runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}

Sin embargo, esto resultó en la exclusión de todos los artefactos org.slf4j, incluido slf4j-api.

Personalizar las exclusiones

Para refinar la exclusión, se pueden utilizar las propiedades del grupo y del módulo:

configurations {
  runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

Este enfoque excluye exitosamente solo org.slf4j:slf4j-log4j12 sin afectar otras dependencias de slf4j.

Excluir de una dependencia individual

Si el Si se desea excluir una dependencia específica, se puede utilizar la siguiente sintaxis:

dependencies {
  compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') {
    exclude group: "org.slf4j", module: "slf4j-log4j12"
  }
}

Limitaciones del método de exclusión

Es importante tener en cuenta que, si bien se pueden especificar propiedades arbitrarias en Exclusiones, esto no está permitido cuando se excluyen de dependencias individuales. Por ejemplo, el siguiente código fallará:

dependencies {
  compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') {
    exclude group: "org.slf4j", name: "slf4j-log4j12"
  }
}

con el siguiente mensaje de error:

No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule

Comprensión de los módulos de Gradle

En Gradle, la propiedad del módulo corresponde al artefactoId de Maven. Por lo tanto, para determinar el módulo de un artefacto Maven en particular, inspeccione su ID de artefacto. Por ejemplo, el artefacto Maven org.slf4j:slf4j-log4j12 tendría un módulo Gradle de slf4j-log4j12.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3