Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

io.jsonwebtoken » jjwt-impl no maven repository

Ao procurar o artefato no maven repository, encontrei esta dependencia também: io.jsonwebtoken » jjwt-impl Qual é a diferença do artefato JJWT para o JJWT implementado? o JJWT só tem as interfaces? Neste caso, quem insere a implementação no projeto?

4 respostas

Oi Arthur

Você pode ver as diferenças de cada projeto no github: https://github.com/jwtk/jjwt

Mas basicamente o módulo de jjwt-impl são as classes (implementações) o outro projeto de API só tem interfaces

Oi Otávio, obrigado.

Dando uma lida no site, achei este trecho, e usei o tradutor mesmo porque ficou bom:

Compreendendo as dependências do JJWT

Observe que todas as declarações de dependência acima têm apenas uma dependência de tempo de compilação e as demais são declaradas como dependências de tempo de execução.

Isso ocorre porque o JJWT é projetado para que você dependa apenas das APIs que são explicitamente projetadas para serem usadas em seus aplicativos e todos os outros detalhes de implementação interna - que podem ser alterados sem aviso - são relegados para dependências somente de tempo de execução. Este é um ponto extremamente importante se você deseja garantir o uso estável do JJWT e atualizações ao longo do tempo:

O JJWT garante compatibilidade de versão semântica para todos os seus artefatos, exceto o jjwt-impl.jar. Essa garantia não é feita para o jjwt-impl.jar e alterações internas nesse .jar podem acontecer a qualquer momento. Nunca adicione o jjwt-impl.jar ao seu projeto com escopo de compilação - sempre declare-o com escopo de tempo de execução.

Isso é feito para beneficiá-lo: muito cuidado é dedicado à curadoria do jjwt-api.jar e garantindo que ele contenha o que você precisa e permaneça compatível com versões anteriores tanto quanto possível para que você possa depender disso com segurança com o escopo de compilação. A estratégia de runtime jjwt-impl.jar oferece aos desenvolvedores JJWT a flexibilidade de alterar os pacotes internos e implementações quando e como for necessário. Isso nos ajuda a implementar recursos, corrigir bugs e enviar novos lançamentos para você de forma mais rápida e eficiente.

O que entendi: os pacotes .impl serve para alterar o comportamento da API?

Mais um update:

Aparentemente, é isso mesmo. As classes de implementação servem para modificar o funcionamento do JJWT caso necessário. A razão disto tudo, pelo o que eu li foi: Para tornar o projeto mais modular e dar mais flexibilidade ao usuário que faz uso do projeto, a implementação, api e as bibliotecas que trabalham com JSON (Jackson ou Gson) foram separadas.

A versão que o instrutor usa, é um pouco mais antiga, porém contém tudo que é necessário para o funcionamento do projeto sendo feito em aula.

Fonte: https://github.com/jwtk/jjwt/issues/526 https://stackoverflow.com/questions/63346655/jjwt-dependency-confusion

solução!

Exatamente o que você descreveu Arthur :)