Cómo comprobar los conflictos de las bibliotecas en Maven


Fecha de publicación:

Actualizado:


Artículos técnicos > Cómo comprobar los conflictos de las bibliotecas en Maven

Estado y uso seguro en 2026

Conclusión: Ejecute mvn dependency:tree para inspeccionar el gráfico resuelto y luego identifique qué ruta introdujo la versión inesperada. Corrija la declaración deliberadamente con una dependencia directa actualizada, dependencyManagement, o una exclusión estrictamente justificada.

Qué aprenderás

  • Cómo la mediación de “definición más cercana” puede ocultar una versión transitiva solicitada.
  • Cómo la salida detallada y filtrada del árbol de dependencia reduce un conflicto.
  • Por qué eliminar archivos del repositorio local o agregar exclusiones aleatorias no es una solución duradera.

Para quién: desarrolladores de Java que investigan errores de vinculación, clases inesperadas o versiones transitivas vulnerables.

Situación en 2026: Las opciones del complemento varían según la versión, así que consulte la documentación actual del complemento de dependencia. Combine la inspección de gráficos con un proceso de análisis de composición de software aprobado por la organización; un árbol limpio no prueba por sí solo que una dependencia sea segura.

Nota de seguridad: Los comandos y ejemplos de configuración del artículo original no se han vuelto a ejecutar en un entorno de producción actual. Verifique las versiones compatibles, las copias de seguridad, los controles de acceso y los pasos de reversión en un entorno de prueba independiente antes de aplicarlos.

Fuentes primarias oficiales

Resumen.

Cómo comprobar los conflictos de las bibliotecas en Maven. Maven resuelve automáticamente las dependencias de la biblioteca jar, pero la configuración por defecto no informa de los conflictos. Así es como se comprueban los conflictos de librerías en Maven en estos casos.

Índice de contenidos

  1. Cuando se producen conflictos de bibliotecas en Maven
  2. Cómo comprobarlo
  3. resumen

1. Cuando se producen conflictos de bibliotecas en Maven

Maven resuelve automáticamente las dependencias de las bibliotecas de Java. La resolución automática de dependencias significa que si tiene un archivo Jar que necesita, obtendrá automáticamente el Jar necesario para ejecutar ese Jar. Para obtener más información sobre cómo funciona la resolución de dependencias específicas de las bibliotecas, consulte el siguiente artículo.

Cómo Maven resuelve automáticamente las dependencias de las bibliotecas jar.

Maven no elimina automáticamente todos los conflictos entre bibliotecas. Sin las comprobaciones adecuadas pueden pasar inadvertidos; esta sección muestra cómo detectarlos.

2. Cómo comprobarlo

Hay dos formas principales de comprobar si hay conflictos en la biblioteca

  • Presentación de los plug-ins
  • Confirmación de pre-construcción por comando.

Un complemento de compilación añade configuración al pom.xml, mientras que una comprobación por comando se ejecuta manualmente antes de compilar. Las secciones siguientes muestran ambos métodos.

2-1. Presentación de los plug-ins

Los siguientes sitios web de Maven pueden ser útiles.

http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html

Añade la siguiente configuración a pom.xml.

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>

Si se insertan las configuraciones anteriores, se produce el siguiente error y la compilación falla si hay conflictos de biblioteca en el momento de la compilación.

[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.

Si se aplica una compilación sin plug-ins, no se producen errores y la compilación termina normalmente. Si quieres detectar conflictos, asegúrate de configurar esto.

2-2. Confirmación de pre-construcción por comando.

Las dependencias se comprueban mediante los siguientes comandos

mvn dependency:tree -Dverbose

y se muestra "omitido por conflicto" si hay un conflicto. También es posible limitar la salida a sólo las áreas en las que hay conflictos, como en el siguiente comando. Nota: 'find' es el comando para Windows. En Linux, esto es 'grep'.

mvn dependency:tree -Dverbose | find "omitted for conflict"

Los conflictos entre bibliotecas pueden comprobarse mirando los resultados de los comandos anteriores.

3. resumen

Si quiere detectar de forma fiable los conflictos de las bibliotecas, le recomendamos "Instalar plug-ins". La introducción de plug-ins garantiza que se advierta cualquier conflicto, ya que la compilación fallará.