Pergunta

Eu estou brincando com a ideia de criar frascos Uber por meus serviços, mas estou preocupado em incluir frascos que têm dependências conflitantes.O que acontece quando Jar A depende do SLF4J-1.0 e JAR B depende do SLF4J-2.0 e houve grandes mudanças entre 1,0 e 2.0?Quando esses frascos são incluídos no Uber Jar, eu tenho que escrever filtros específicos por namespace ou algo acontecer durante o processo de sombra que namespaces os frascos?

Obrigado pela ajuda

Foi útil?

Solução

Você está correto para se preocupar.Você acaba com colisões (um colega chamou de 'DLL Inferno de novo') e às vezes você pode ter aulas de V1 e V2 no mesmo diretório no jarfile.

Você pode excluir uma ou a outra versão facilmente, mas se suas dependências precisarem de ambos, você enfrenta as seguintes opções:

  • Encontre uma nova dependência que não tem o conflito
  • upgrade ou downgrade de uma dependência atual para trazer versões na linha
  • navio como um arquivo de guerra ou algum outro tipo de arquivo que lida com isso melhor, incluindo um jarfile normal com um manifesto que inclui um classpath
  • Considere a bota de primavera, que usa uma estratégia diferente do sombreamento: http://docs.spring.io/spring-boot/docs/current-snapshot/reference/#lsingle/#executable-Jar

Tudo o que você faz, Gradle Dependências é útil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top