Comme décrit dans another SO post, il n'y a pas de phase post-test
dans Maven pour de bonnes raisons (principalement, le test unitaire est un test unitaire).
Cependant, dans votre cas, vous n'avez pas besoin de créer un plugin Maven supplémentaire, ce qui résoudrait probablement le problème mais ajouterait également une couche supplémentaire de complexité en termes de maintenance, de test, de partage.
Puisque vous avez déjà le code requis dans une méthode Java - comme mentionné dans la question - il serait probablement plus logique d'utiliser le Exec Maven Plugin et son objectif java
.
Vous pouvez donc simplement ajouter à votre POM:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<phase>test</phase> <!-- executed as post-test, that is, after Surefire default execution -->
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.sample.JsonFileAggregator</mainClass> <!-- your existing Java code, wrapped in a main -->
<arguments>
<argument>${project.build.directory}</argument> <!-- directory from where to load json files -->
</arguments>
<classpathScope>test</classpathScope> <!-- if your Java code is in test scope -->
</configuration>
</execution>
</executions>
</plugin>
qui est, liant son exécution à la phase test
, Maven exécuté après une liaison par défaut (donc après la valeur par défaut Maven exécution Surefire) et comme tel exécuté comme post-test
. Votre code Java existant peut ensuite être appelé via une ligne Java spécialement construite (si elle n'existe pas déjà), lui transmettant potentiellement des arguments (comme le répertoire d'où charger les fichiers .json, dans le fragment ci-dessus dans le dossier target
, via sa propriété standard ${project.build.directory}
, à titre d'exemple). En outre, comme mentionné dans l'extrait, votre code Java peut être situé dans test
portée (c'est-à-dire, sous src/test/java
), donc pour le rendre visible, vous devrez également configurer le classpathScope
en conséquence.
Très pertinent http://stackoverflow.com/q/35550818/1743880 – Tunaki
Quel type de post-traitement souhaitez-vous effectuer après les tests unitaires? Si oui, ils ne sont pas indépendants les uns des autres ... ce qui me semble faux ... – khmarbaise
@khmarbaise Je veux fusionner le contenu des fichiers .json dans un seul fichier et générer un rapport à partir de ce fichier. J'ai déjà du code Java pour cela; c'est juste une question de trouver la façon la plus appropriée de l'invoquer. Basé sur la réponse de Tunaki dans la question liée, il semble que la solution recommandée est de créer un plugin Maven et le lier à la phase de test. – rob