2012-10-02 11 views
5

Ho bisogno di ottenere l'output dell'obiettivo "dependency: tree" di Maven all'inizio della fase di "test", per aiutare il debug di un problema per il quale ho bisogno per sapere quali versioni di tutto vengono utilizzate. In Ant sarebbe stato facile, ho guardato attraverso i documenti Maven e numerose risposte qui ma ancora non riesco a capirlo, sicuramente non è così difficile?Maven esegue "dependency: tree" all'inizio della fase "test"

+0

Stai dicendo che si desidera che il 'Maven-dipendenza-Plugin' per eseguire il' tree' obiettivo durante la fase di 'test'? – maba

risposta

5

Se si vuole essere sicuri che il dependency:tree viene eseguito all'inizio della fase di test allora si dovrà spostare la surefire:test obiettivo originale ad essere condotta dopo il dependency:tree. Per farlo dovrai inserire i plugin nell'ordine in cui devono essere eseguiti.

Questo è un esempio completo pom.xml che aggiunge maven-dependency-plugin prima dello maven-surefire-plugin. L'originale default-test è disattivato e viene aggiunto un nuovo custom-test, che verrà eseguito dopo l'esecuzione dello 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> 

È un po 'scomoda ma che è il modo per disattivare esecuzioni.

3

Declare questo nel vostro progetto 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> 

È possibile adottare questo modello per attivare alcun plugin durante una fase di costruzione specifica. Vedi http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.

Vedere anche http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference per un elenco delle fasi di compilazione. Come sottolineato da maba, è necessario selezionare attentamente la fase per garantire che l'obiettivo venga eseguito al momento giusto.

+0

Questo eseguirà 'dependency: tree' dopo i test effettivi. L'OP dice che vuole che funzioni all'inizio della fase di test. – maba

+0

Buon punto. Invece poteva legarsi a 'test-compile' o anche' compile'. Spero che la comprensione del modello generale per collegare i plugin alle fasi sarà sufficiente per risolvere il problema. (Modificato la mia risposta). –

+0

+1 per mostrare come aggiungere 'dependency: tree' alla fase' test'. Aggiungerò un'altra risposta che mostra come ottenere 'dependency: tree' all'inizio della fase' test'. – maba

6

Questa volontà di uscita l'albero di prova delle dipendenze:

mvn test dependency:tree -DskipTests=true 
Problemi correlati