"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como excluir dependências transitivas específicas no Gradle?

Como excluir dependências transitivas específicas no Gradle?

Publicado em 2024-11-06
Navegar:831

How to Exclude Specific Transitive Dependencies in Gradle?

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.

Tutorial mais recente Mais>

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