2012-10-02 16 views
5

Necesito obtener la salida de "dependencia: árbol" de Maven al inicio de la fase de "prueba", para ayudar a resolver un problema que necesito saber qué versiones de todo se están utilizando. En Ant habría sido fácil, he revisado los documentos de Maven y tengo muchas respuestas aquí, pero todavía no puedo entenderlo, ¿no es difícil?Maven ejecute "dependency: tree" al inicio de la fase de "prueba"

+0

¿Quiere decir que desea que el 'experto dependencia-Plugin' para ejecutar el' tree' meta durante la fase de 'test'? – maba

Respuesta

5

Si usted quiere estar seguro de que el dependency:tree se está ejecutando en el comienzo de la fase test entonces usted tendrá que mover el objetivo original surefire:test de ser llevado a cabo después de la dependency:tree. Para hacer eso, tendrás que poner los complementos en el orden en que deben ejecutarse.

Aquí hay un ejemplo completo de pom.xml que agrega maven-dependency-plugin antes del maven-surefire-plugin. El default-test original está deshabilitado y se agrega un nuevo custom-test y este se ejecutará después de la ejecución dependency-tree.

<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 que es la manera de desactivar las ejecuciones.

3

nuevas de esto 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> 

Puede adoptar este patrón para desencadenar ningún plugin durante una fase de organización específica. Ver http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.

Consulte también http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference para obtener una lista de las fases de compilación. Como señala maba, debe seleccionar cuidadosamente la fase para asegurarse de que el objetivo tree se ejecute en el momento correcto.

+0

Eso ejecutará 'dependency: tree' después de las pruebas reales. El OP dice que quiere que se ejecute al comienzo de la fase de prueba. – maba

+0

Buen punto. En cambio, podría unirse a 'test-compile' o incluso' compile'. Esperemos que comprender el patrón general para unir plugins a fases sea suficiente para resolver el problema. (Editado mi respuesta). –

+0

+1 para mostrar cómo agregar 'dependency: tree' a la fase' test'. Agregaré otra respuesta que le muestra cómo hacer que 'dependency: tree' se ejecute al principio de la fase' test'. – maba

6

Esta es la salida del árbol de dependencias prueba:

mvn test dependency:tree -DskipTests=true 
Cuestiones relacionadas