2010-06-27 6 views
5

J'ai deux ensembles de tests d'intégration dans un projet maven - des tests automatiques et manuels. Les tests manuels sont peu nombreux mais fastidieux - ils nécessitent de tirer sur la prise des serveurs, etc. Je voudrais créer un objectif distinct pour les tests manuels, afin que je puisse exécuter quelque chose comme mvn manualtests pour lancer les tests manuels. Si vous exécutez simplement une build maven normale mvn install, les tests automatiques doivent être exécutés.Maven - ajouter une phase personnalisée pour exécuter le plugin avec une autre configuration

J'ai déjà annoté les tests manuels avec l'annotation TestNG @Test(groups="manual". L'objectif est maintenant d'avoir deux configurations du plugin surefire, l'une exécutant les tests automatiques qui sont liés à la phase de test de la construction, et l'autre exécutant les tests manuels qui sont liés à une autre phase personnalisée que je voudrais appeler manualtests. Il semble qu'il ne soit pas possible de lier une exécution d'un plugin à une phase inexistante (c'est-à-dire qui n'est pas prédéfinie par maven). N'est-il pas possible de définir vos propres phases?

Répondre

1

Cela devrait être possible, mais pas facile. Première étape: regardez comment cela se fait par défaut.

utilisation de cette dépendance:

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-core</artifactId> 
    <version>${maven.version}</version> 
</dependency> 

obtenir les sources et jeter un oeil à l'intérieur components.xml META-INF/plexus. là, les phases par défaut et les liaisons cycle de vie/phase par défaut sont définies.

créer un plug-in qui remplace ces phases par défaut (dans sa propre components.xml) et define it as an extension

+0

pas facile du tout ... peut-être un pourrait faire un plugin qui ajouterait dynamiquement les cycles de vie basés sur la config du plugin. Je vais regarder dedans. –

Questions connexes