Maven ejecutar la "dependencia:árbol" en el inicio de la "prueba" de la fase de
Pregunta
Tengo que conseguir la "dependencia:árbol de objetivo" de salida de Maven en el inicio de la "prueba" de fase, para ayudar a depurar un problema para el cual necesito saber qué versiones de todo lo que están siendo utilizados.
En Ant hubiera sido fácil, he mirado a través de Maven docs y numerosas respuestas aquí, pero todavía no puedo entenderlo, seguramente no es tan difícil?
Solución
Si usted quiere estar seguro de que el dependency:tree
se ejecuta en el inicio de la test
fase de continuación, tendrá que mover el original surefire:test
objetivo para ser llevado a cabo después de la dependency:tree
.Para hacer esto usted tendrá que poner los plugins en el orden en que deben ejecutarse.
Aquí es un completo pom.xml
ejemplo que añade la maven-dependency-plugin
antes de la maven-surefire-plugin
.El original default-test
es discapacitado y un nuevo custom-test
se agrega y esto va a ser ejecutado después de la dependency-tree
de la ejecución.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12687743</artifactId>
<version>1.0-SNAPSHOT</version>
<name>${project.artifactId}-${project.version}</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>dependency-tree</id>
<phase>test</phase>
<goals>
<goal>tree</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<executions>
<execution>
<id>default-test</id>
<!-- Using phase none will disable the original default-test execution -->
<phase>none</phase>
</execution>
<execution>
<id>custom-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Es un poco incómodo, pero esa es la manera de deshabilitar las ejecuciones.
Otros consejos
Esto emitirá el árbol de dependencia de la prueba:
mvn test dependency:tree -DskipTests=true
Declarar, en su proyecto POM:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>tree</goal>
</goals>
</execution>
</executions>
</plugin>
Usted puede adoptar este modelo para desencadenar algún plugin durante un determinado fase de construcción.Ver http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.
Ver también http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference para obtener una lista de las fases de construcción.Como maba puntos, usted necesita seleccionar cuidadosamente la fase de garantizar la tree
la meta es ejecutada en el momento correcto.