Como verificar conflitos na biblioteca em Maven
Data de Publicação:
Atualizado:
Artigos > Como verificar conflitos na biblioteca em Maven
status 2026 e uso seguro
Conclusão: execute mvn dependency:tree para inspecionar o gráfico resolvido e, em seguida, identifique qual caminho introduziu a versão inesperada. Corrija a declaração deliberadamente com uma dependência direta atualizada, dependencyManagement, ou uma exclusão estritamente justificada.
O que você aprenderá
- Como a mediação de “definição mais próxima” pode ocultar uma versão transitiva solicitada.
- Como a saída detalhada e filtrada da árvore de dependências restringe um conflito.
- Por que excluir arquivos do repositório local ou adicionar exclusões aleatórias não é uma solução duradoura.
A quem se destina: desenvolvedores Java que investigam erros de ligação, classes inesperadas ou versões transitivas vulneráveis.
Atualização para 2026: As opções do plug-in variam de acordo com a versão, portanto, verifique a documentação atual do plug-in de dependência. Combine a inspeção gráfica com um processo de análise de composição de software aprovado pela organização; uma árvore limpa por si só não prova que uma dependência é segura.
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
Como verificar se existem conflitos na biblioteca em Maven. Maven resolve automaticamente as dependências para a biblioteca do ficheiro JAR, mas a configuração padrão não o informa de conflitos. É assim que se verifica a existência de conflitos na biblioteca em Maven em tais casos.
Tabela de Conteúdos
1. Quando ocorrem conflitos na biblioteca em Maven
Maven resolve automaticamente as dependências da biblioteca Java. A resolução automática de dependência significa que se tiver um ficheiro Jar de que necessita, obterá automaticamente o Jar necessário para executar esse Jar. Para mais informações sobre como funciona a resolução de dependência específica da biblioteca, ver o artigo seguinte.
Como Maven resolve automaticamente as dependências da biblioteca de ficheiros JAR.
Contudo, quando ocorrem conflitos na biblioteca, eles não são resolvidos automaticamente. Além disso, se não tiver os parâmetros instalados, nem sequer consegue detectar um conflito. Gostaríamos de descrever como verificar se existem conflitos na biblioteca.
2. Como verificar
Há duas formas principais de verificar se existem conflitos na biblioteca
- Introduzindo plug-ins
- Confirmação pré-construída por comando.
Instalar "plug-ins" é um método de adicionar definições ao pom.xml. Verificar com comando antes de construir" significa literalmente verificar manualmente com um comando antes de construir. Esta secção explica como fazer isto especificamente.
2-1. Introduzindo plug-ins
Os seguintes websites Maven podem ser úteis.
http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
Adicionar as seguintes definições ao pom.xml.
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
Se as definições acima forem inseridas, ocorre o seguinte erro e a construção falha se houver conflitos na biblioteca no momento da construção.
[WARNING]
Dependency convergence error for org.apache.commons:commons-collections4:4.1 paths to dependency are:
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.poi:poi:3.17
+-org.apache.commons:commons-collections4:4.1
and
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.commons:commons-collections4:4.0
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.
Se uma construção for aplicada sem plug-ins, não ocorrem erros e a construção termina normalmente. Se quiser detectar conflitos, assegure-se de que o estabelece.
2-2. Confirmação pré-construída por comando.
As dependências são verificadas através dos seguintes comandos
mvn dependency:tree -Dverbose
e "omitido por conflito" é exibido se houver um conflito. Também é possível limitar a produção apenas às áreas onde existem conflitos, como no comando seguinte. Nota: O 'find' é o comando para Windows. Para o Linux, isto é 'grep'.
mvn dependency:tree -Dverbose | find "omitted for conflict"
Os conflitos na biblioteca podem ser verificados através da análise dos resultados dos comandos acima referidos.
3. resumo
Se quiser detectar de forma fiável conflitos na biblioteca, recomendamos 'Instalar plug-ins'. A introdução de plug-ins assegura que quaisquer conflitos sejam notados, uma vez que a construção falhará.