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