Question

J'ai besoin d'obtenir le résultat de l'objectif "dependency:tree" de Maven au début de la phase "test", pour aider à déboguer un problème pour lequel j'ai besoin de savoir quelles versions de tout sont utilisées.

Dans Ant, cela aurait été facile, j'ai parcouru la documentation Maven et de nombreuses réponses ici mais je n'arrive toujours pas à comprendre, ce n'est sûrement pas si difficile ?

Était-ce utile?

La solution

Si vous voulez être sûr que le dependency:tree est en cours au début du test phase alors vous devrez déplacer l'original surefire:test objectif d'être mené après le dependency:tree.Pour ce faire, vous devrez placer les plugins dans l’ordre dans lequel ils doivent être exécutés.

Voici un complet pom.xml exemple qui ajoute le maven-dependency-plugin avant le maven-surefire-plugin.L'original default-test est désactivé et un nouveau custom-test est ajouté et celui-ci sera exécuté après le dependency-tree exécution.

<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>

C'est un peu gênant mais c'est ainsi que l'on peut désactiver les exécutions.

Autres conseils

Cela émettra l'arborescence de dépendance des tests:

mvn test dependency:tree -DskipTests=true

Déclarez ceci dans le POM de votre projet :

 <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>

Vous pouvez adopter ce modèle pour déclencher n'importe quel plugin pendant une phase de construction spécifique.Voir http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.

Voir également http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference pour une liste des phases de construction.Comme le souligne Maba, vous devez sélectionner soigneusement la phase pour garantir que tree l'objectif est exécuté au bon moment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top