Como o Maven resolve dependências transitivas de bibliotecas JAR


Data de Publicação:

Atualizado:


Artigos > Como o Maven resolve dependências transitivas de bibliotecas JAR

status 2026 e uso seguro

Conclusão: o Maven não descobre JARs arbitrários por nome de arquivo. Ele resolve as coordenadas declaradas, baixa o artefato POM, segue as dependências do POM, aplica escopo e regras opcionais e usa mediação de dependência quando vários caminhos solicitam versões diferentes.

O que você aprenderá

  • Como os repositórios locais, centrais, espelhos e privados participam da resolução.
  • Por que o POM de uma dependência — e não o JAR em si — descreve a maioria dos requisitos transitivos.
  • Como inspecionar o gráfico efetivo antes de substituir uma versão.

A quem se destina: usuários do Maven que desejam entender de onde vêm os artefatos baixados e por que bibliotecas extras aparecem.

Atualização para 2026: As coordenadas mais antigas do POI do Apache abaixo permanecem úteis como um exemplo histórico, não como uma recomendação de versão. Use dependências atuais suportadas, repositórios HTTPS confiáveis, controles de soma de verificação/assinatura quando disponíveis e uma política de atualização de dependências.

Nota de segurança: os comandos e exemplos de configuração do artigo original não foram novamente executados num ambiente de produção atual. Antes de os aplicar, confirme as versões suportadas, as cópias de segurança, os controlos de acesso e o procedimento de reversão num ambiente de teste isolado.

Fontes primárias oficiais

Visão geral

O Maven descarrega automaticamente os ficheiros JAR e as respetivas dependências dos repositórios. Esta secção descreve o mecanismo de resolução.

Se os conceitos de POM, artefacto e ciclo de vida ainda não forem familiares, comece pela introdução seguinte.

Apache Maven: POM, ciclo de vida e dependências

Tabela de Conteúdos

  1. A capacidade de Maven para resolver as dependências da biblioteca de ficheiros JAR.
  2. resumo

1. Resolução de dependências JAR com Maven

Basta declarar uma dependência no pom.xml: o Maven descarrega o artefacto pedido e as suas dependências transitivas.

1-1. O que incluir no ficheiro pom.xml.

As dependências são declaradas em pom.xml através das coordenadas Maven. O exemplo seguinte pede o Apache POI 3.17, uma biblioteca usada, entre outras funções, para processar documentos do Microsoft Office.

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

Com esta declaração, o Maven obtém "poi-3.17.jar" e as dependências transitivas necessárias ao seu funcionamento.

1-2. Como são descarregados a partir da Internet?

Uma explicação simples do sistema é mostrada no diagrama abaixo.

Repositório Maven.

O Maven resolve os artefactos nos repositórios configurados. Sem configuração adicional, utiliza o Maven Central, disponível no endereço seguinte.

https://repo1.maven.org/maven2/

Consulte o seguinte website para obter uma lista de repositórios disponíveis na Internet, se estiver interessado.

https://mvnrepository.com/repos

Na primeira vez, o ficheiro JAR é retirado de um repositório externo, mas é copiado para o repositório local e não é retirado a partir da segunda vez. A localização do repositório local é "C:\Users\user\.m2".

Se quiser alterar o destino a partir do valor padrão, pode também alterar o destino incluindo a seguinte etiqueta de repositório em pom.xml.

pom.xml


<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
        </snapshots>
    </repository>
</repositories>

1-3. Resolução das dependências de um artefacto JAR

Acabámos de descrever um exemplo de obtenção de 'poi-3.17.jar', mas 'poi-3.17.jar' requer 'colecções comuns4-4.1.jar' para correr. Isto significa que 'poi-3.17.jar' depende de 'commons-collections4-4.1.jar'. O mecanismo para resolver esta dependência pode ser encontrado no repositório Maven onde a 'poi-3.17.jar' é armazenada. O URL é o seguinte.

https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/

O repositório também contém "poi-3.17.pom". O Maven lê esse POM, identifica a dependência de "commons-collections4-4.1.jar" e repete a resolução para os restantes artefactos. Antes de impor uma versão, convém analisar o grafo resultante.

2. Conclusão

O POM do projeto declara os artefactos diretos; os POM publicados nos repositórios descrevem as dependências transitivas. O Maven resolve o grafo, descarrega os ficheiros necessários e guarda-os no repositório local.

■INFORMATION

Artigos


■PROFILE

Perfil


■Contacto

Contacto