Excluindo dependências transitivas com Gradle
No Gradle, ao usar o plugin do aplicativo para gerar um arquivo jar, é possível encontrar dependências transitivas que você pode querer excluir. Para conseguir isso, o método exclude pode ser empregado.
Comportamento padrão de exclusão
Inicialmente, foi feita uma tentativa de excluir todas as instâncias de org.slf4j:slf4j- log4j12 usando o seguinte código:
configurations { runtime.exclude group: "org.slf4j", name: "slf4j-log4j12" }
No entanto, isso resultou na exclusão de todos artefatos org.slf4j, incluindo slf4j-api.
Personalizando as exclusões
Para refinar a exclusão, as propriedades do grupo e do módulo podem ser utilizadas:
configurations { runtime.exclude group: "org.slf4j", module: "slf4j-log4j12" }
Esta abordagem exclui com êxito apenas org.slf4j:slf4j-log4j12 sem afetar outras dependências slf4j.
Excluir de uma dependência individual
Se o exclusão é desejada para uma dependência específica, a seguinte sintaxe pode ser usada:
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", module: "slf4j-log4j12" } }
Limitações do método de exclusão
É importante observar que, embora propriedades arbitrárias possam ser especificadas em Exclusões, isso não é permitido ao excluir de dependências individuais. Por exemplo, o código a seguir falhará:
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", name: "slf4j-log4j12" } }
com a seguinte mensagem de erro:
No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule
Compreendendo os módulos Gradle
No Gradle, a propriedade do módulo corresponde ao artefatoId do Maven. Portanto, para determinar o módulo de um artefato Maven específico, inspecione seu artefatoId. Por exemplo, o artefato Maven org.slf4j:slf4j-log4j12 teria um módulo Gradle de slf4j-log4j12.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3