maven 2 - mvn - ¿Cómo puedo hacer que Maven falle cuando se hace referencia a versiones en conflicto del mismo artefacto?
que es maven netbeans (4)
Me gustaría que mi compilación de Maven fallara si se hace referencia al mismo artefacto con diferentes versiones en mi árbol de dependencias. Esto parece una opción bastante trivial, pero no puedo averiguar cómo hacerlo. ¿Alguna pista?
Agrega el siguiente plugin:
Fuente: dependencyConvergence
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
El complemento de dependencia de Maven incluirá una nueva dependency:analyze-duplicate
en su versión 2.2 y, en mi opinión, es lo más cercano que puede obtener sin un desarrollo específico (no fallará en la compilación, pero enumera las dependencias duplicadas).
Este objetivo se agregó para MDEP-206 ( Agregar nuevo Mojo para encontrar una dependencia duplicada declarada ), que está solucionado, pero la versión 2.2 aún no se ha lanzado, por lo que si desea utilizar esta función, deberá crear un SNAPSHOT del árbol fuente:
https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-dependency-plugin/
Si realmente quiere fallar la compilación en caso de duplicado, escriba su propio mojo (extienda el anterior) o envíe un RFE del complemento de dependencia de Maven.
Como nota al margen, Maven 3 lanza el error de validación [a] si pom contiene una dependencia con dos versiones diferentes de la caja. Para ser totalmente preciso, esto se informará como una advertencia en Maven 3.0 para no romper las compilaciones existentes de Maven 2.x (ver MNG-4005 ) y se incrementará al error en 3.1 (vea MNG-4622 ).
Maven-enforcer-plugin tiene una regla de dependencyConvergence convergencia que hace lo que usted quiere. Aquí hay un ejemplo de la documentación.
Esto hará que una compilación falle:
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.6.0</version>
</dependency>
</dependencies>
Con esto siendo registrado durante la compilación:
[ERROR]
Dependency convergence error for org.slf4j:slf4j-api:1.6.1 paths to dependency are:
+-org.myorg:my-project:1.0.0-SNAPSHOT
+-org.slf4j:slf4j-jdk14:1.6.1
+-org.slf4j:slf4j-api:1.6.1
and
+-org.myorg:my-project:1.0.0-SNAPSHOT
+-org.slf4j:slf4j-nop:1.6.0
+-org.slf4j:slf4j-api:1.6.0
Puede hacer que la compilación falle en las advertencias de análisis de dependencia utilizando el complemento de dependencia.
Ver