Maven führt „dependency:tree“ zu Beginn der „Test“-Phase aus
Frage
Ich muss zu Beginn der „Test“-Phase die Zielausgabe „dependency:tree“ von Maven erhalten, um beim Debuggen eines Problems zu helfen, für das ich wissen muss, welche Versionen von allem verwendet werden.
In Ant wäre es einfach gewesen. Ich habe die Maven-Dokumente und zahlreiche Antworten hier durchgesehen, komme aber immer noch nicht dahinter, es ist doch sicher nicht so schwer?
Lösung
Wenn Sie sicher sein möchten, dass die dependency:tree
wird am Anfang des ausgeführt test
In dieser Phase müssen Sie das Original verschieben surefire:test
Ziel, nach dem durchgeführt zu werden dependency:tree
.Dazu müssen Sie die Plugins in die Reihenfolge bringen, in der sie ausgeführt werden sollen.
Hier ist eine komplette pom.xml
Beispiel, das das hinzufügt maven-dependency-plugin
Vor dem maven-surefire-plugin
.Das Original default-test
ist deaktiviert und ein neues custom-test
wird hinzugefügt und dieser wird nach dem ausgeführt dependency-tree
Ausführung.
<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 ist etwas umständlich, aber das ist die Möglichkeit, Ausführungen zu deaktivieren.
Andere Tipps
Dadurch wird der Testabhängigkeitsbaum ausgegeben: generasacodicetagpre.
Deklarieren Sie dies in Ihrem Projekt-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>
Sie können dieses Muster übernehmen, um jedes Plugin während einer bestimmten Build-Phase auszulösen.Sehen http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.
Siehe auch http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference für eine Liste der Bauphasen.Wie Maba betont, müssen Sie die Phase sorgfältig auswählen, um dies sicherzustellen tree
Das Ziel wird zum richtigen Zeitpunkt ausgeführt.