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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top