Maven run "dipendenza: albero" all'inizio della fase "test"
Domanda
Ho bisogno di ottenere la "dipendenza: albero" dell'ottuale output di Maven all'inizio della fase "Test", per contribuire a eseguire il debug di un problema per il quale ho bisogno di sapere quali versioni di tutto sono state utilizzate.
A formica sarebbe stato facile, ho guardato attraverso i Documenti Maven e numerose risposte qui, ma non riescono ancora capirlo, sicuramente non è così difficile?
Soluzione
Se si desidera accertarsi che il dependency:tree
venga eseguito nell'inizio della fase test
, è necessario spostare l'obiettivo originale surefire:test
per essere condotti dopo il dependency:tree
.Per fare ciò dovrai mettere i plugin nell'ordine in cui dovrebbero essere eseguiti.
Ecco un esempio completo pom.xml
che aggiunge il maven-dependency-plugin
prima del maven-surefire-plugin
.Il default-test
originale è disabilitato e viene aggiunto un nuovo custom-test
e questo verrà eseguito dopo l'esecuzione 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 'imbarazzante, ma questo è il modo di disabilitare le esecuzioni.
Altri suggerimenti
Questo emetterà l'albero di dipendenza test:
mvn test dependency:tree -DskipTests=true
. Dichiara questo nel tuo 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 qualsiasi plug-in durante una fase di costruzione specifica.Vedi http://maven.apache.org/Guides/INTRODUZIONE / INTRODUZIONE-TO-THE-LifeCycle.html # plugin .
Vedi anche http://maven.apache.org / guide / introduzione / introduzione-to-the-lifecycle.html # lifecycle_reference per un elenco delle fasi di costruzione.Come sottolinea MABA, è necessario selezionare attentamente la fase per garantire che l'obiettivo tree
sia eseguito al momento giusto.