2010-07-28 4 views
0

Je dois créer un sous-répertoire dans le répertoire cible lors de la compilation avec maven2. La raison en est que j'utilise un plugin qui saisit les réponses aux requêtes SOAP et les stocke dans/target/xml dans la phase de test d'intégration.Comment créer un sous-répertoire dans la cible avec Maven2

Le problème est que si je spécifie le savepath du plugin à (par exemple): $ {basedir}/target/xml le plugin lève une exception FileNotFoundException. La raison pour laquelle je veux que le fichier soit dans/target est que le répertoire soit nettoyé lors de l'invocation de mvn clean.

Des suggestions?

Répondre

6

Vous pouvez créer une classe de base abstraite commune que vos classes de scénario de test étendent.
Ajoutez un initialiseur d'initialisation statique à la classe de base abstraite qui vérifie si le répertoire existe et, dans le cas contraire, le crée.

Le bloc d'initialisation statique sera exécuté la première fois que la classe de base est chargée et sera exécuté avant tout bloc d'initialisation statique ou constructeur dans les sous-classes de cas de test.

EDIT: OK, alors vous aurez à enlaidir votre pom avec la définition du plugin ci-dessous, qui se lie aux generate-test-resourcesphase, et invoquez le plugin antrun pour créer le répertoire.

<build> 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
      <execution> 
      <phase>generate-test-resources</phase> 
      <configuration> 

       <tasks> 
       <echo message="Creating test output directory"/> 
       <mkdir dir="./target/xml"/> 
       </tasks> 

      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
+0

J'utilise un plugin maven2 pour faire le test (SoapUI) de sorte que ne fonctionnera pas dans mon cas, je crains que (les testcases sont précisées dans un projet de SoapUI que les charges de plug-in et courir dans le phase d'intégration-test). Il serait plus simple de sauvegarder les fichiers xml dans le répertoire cible, mais ce serait compliqué alors je préfèrerais créer un sous-répertoire dans la cible avec le nom "xml" pour que les fichiers xml y soient sauvegardés. – John

+0

Merci. C'est vraiment moche mais ça fait l'affaire - je suppose que je pourrais juste créer le répertoire de sortie en dehors du répertoire cible mais ensuite je devrais définir le plugin maven clean pour qu'il nettoie les XML de réponse, hehe. Accepté. – John

+0

Merci, la première solution (le mettre dans le test) fonctionne pour moi. Il semble fou d'avoir à utiliser le plugin ant pour cela (pourquoi ne pas faire cela?) Et l'approche de test est le moins de tracas. Merci! – ksclarke

Questions connexes